2017-01-27 9 views
0

У меня есть данные с карты, где следующие позиции считаются границами карты.Расположение позиций на масштабируемой карте

  • Верхний левый считается (92, 49)
  • в левом нижнем углу (-93, 49)
  • Верхний правый (92, -25),
  • Нижний правый (-93, -25)

У меня есть много координат между этими значениями, которые являются поплавками, и я хотел бы разместить их на карте для просмотра.

Карта самой игры на самом деле всего 185 длиной и длиной 74, но я масштабирую карту до 1024 поперек и 786 в высоту для лучшей видимости.

Как я мог бы правильно построить точку, например, -52.6, 12.55 на этой карте в Java JFrame, где верхний левый считается 0,0? Как, как бы я масштабировать его, чтобы получить правильное положение в масштабированной карте, чтобы нарисовать пятно?

ответ

1

Я думаю, что ваша новая высота 786 - это опечатка и должна быть 768, а координаты для углов старой карты, скорее всего, будут неправильно маркированы.

Вам необходимо создать функцию сопоставления.

mappedX = (x - oldTopX) * (newWidth/oldWidth); 
mappedY = (oldTopY - y) * (newHeight/oldHeight); 

Так что для вашей Координаты х -52.6, новая сопоставляются й точка (-52,6 - -93) * (1024/185), которая равна 223,6

Новое отображаются значение у есть (49 - 12,55)/(786/74) = 387,2

Википедия имеет хорошую страницу 2D компьютерной графики, которая охватывает то, что вы ищете: https://en.wikipedia.org/wiki/2D_computer_graphics

+0

Это именно то, что мне было нужно. Спасибо! – DominicEU