Задать вопрос

Как правильно преобразовать координаты?

Есть функция для преобразования координат мыши в координаты карты
export function canvasCoordinatesToMapCoordinates(
  coordinates: ICoordinates,
  camera: Camera,
  textureSize: number
): ICoordinates {
  const coordinateX = Math.floor((coordinates.x + camera.x) / textureSize);
  const coordinateY = Math.floor((coordinates.y + camera.y) / textureSize);

  return {
    x: coordinateX,
    y: coordinateY,
  };
}


Для значений
coordinates = {x: 61, y: 64}
camera = {x: 0, y: 0};
textureSize = 32;

всё высчитывается верно
{x: 1, y: 2}

Однако для значений
coordinates = {x: 106, y: 64}
camera = {x: 0, y: 0};
textureSize = 32;

получаю результат
{x: 3, y: 2}
хотя ожидаю
{x: 4, y: 2}

Полагаю делается всё это совершенно иначе, однако беглое гугление результатов не дало, ибо с теорией большие проблемы... =(
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
longclaps
@longclaps
ибо с теорией большие проблемы

все жалуются на теорию  беглое гугление нехватку памяти, никто не жалуется на недостаток ума

106/32 == 3.3125
Math.floor просто отбрасывает дробную часть аргумента (в случае, если аргумент положителен, с отрицательным разберись сам):
Math.floor(3.3125) == 3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы