Блин с камерой приводит к швам (из-за ошибок с плавающей запятой?) - PullRequest
1 голос
/ 24 августа 2011

Я работаю над реализацией тайлакарты с блиттингом (во Flash, но я не думаю, что это актуально для языка).Проблема, с которой я сталкиваюсь, заключается в том, что, когда я поворачиваю камеру, начинают становиться видимыми 1-пиксельные швы в зависимости от местоположения.

Вот как я определяю свою точку бликования:

var destination : Point = _position.toPoint();

if (camera != null)
{
    destination.x -= camera.position.x;
    destination.y -= camera.position.y;
}

// the actual blit, not really relevant:
canvas.bitmapData.copyPixels(_bitmapData, _sourceRectangle, destination, null, null, true);

Когда я прокручиваю свою камеру, я вижу, что положение становится по-настоящему шатким.Вот некоторые следы:

     pre-camera: 443 534
     post-camera: 396.3333333333333 294
     pre-camera: 476 534
     post-camera: 429.3333333333333 294
     pre-camera: 509 534
     post-camera: 462.3333333333333 294

Швы появляются только с теми позициями .3333333333 после камеры.

Кажется ли логичным, что эти проблемы с плавающей точкой являются причиной швов?Безопасно ли просто указывать / округлять целевые значения, так как в любом случае вы не можете увеличить до половины пикселя.

Спасибо!

...