Игра Map Viewer MouseX, от Y до Long, широта

63
6

Я не уверен, как правильно это сформулировать, однако я работал над программой просмотра карт, загружающей растровый файл на поверхность Direct2D. Тем не менее, я хочу, чтобы координаты мыши X, Y координаты карты соответствовали координатам игры, аналогичным координатам игры.

Вот примерная картина того, что я имею в виду:

http://i.stack.imgur.com/FOaxG.png

Средство просмотра левой карты - отдельное приложение, я пытаюсь имитировать это в своем собственном средстве просмотра карт, однако вы можете видеть, что я в левом нижнем углу на обеих формах, а координаты не совпадают с Lon/Lat моего просмотра карт,

Мы шириной 4624 пикселя, нижний левый угол должен конвертироваться в Lon: 16384 Lat: 24577, в то время как верхний правый угол конвертируется в Lon: 90111 Lat: 98304

var
BSize: TD2DSizeF;
S4, S5: string;
FPos: TPoint;
begin
S4 := 'Longitude: '+FloatToStr((BSize.Width / 360) * (180 + FPos.X));
S5 := 'Latitude: '+FloatToStr((BSize.Height / 180) * (90 - FPos.Y));

Может ли кто-нибудь указать мне в правильном направлении, чтобы это исправить? Не понимаю ли я концепцию?

спросил(а) 2021-01-25T19:38:07+03:00 4 месяца, 3 недели назад
1
Решение
63

Если я правильно вас понял, формулы должны быть:

Lon := 16384 + x / MaxX * (90111 - 16384);
Lat := 98304 - y / MaxY * (98304 - 24577);

Где MaxX и MaxY - пиксельные координаты нижнего правого угла (т.е. Width - 1 и Height - 1, соответственно).

ответил(а) 2021-01-25T19:38:07+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема