Перевод х, у при масштабировании

Я пытаюсь построить график координат x, y, где размер окна составляет 600 на 600 пикселей. (0,0) будет слева вверху.
(300 300) середина окна.
(600 600) будет в правом нижнем углу.
Я пытаюсь перевести широту / долготу в радианах в пиксели и затем построить их.
Я рассчитываю 1px =? Lat by

`fabs(lborder+rborder)/600`

Я рассчитал lon, взяв верхнюю и нижнюю границы.
Затем, когда я хочу найти определенную позицию для определенного широты или долготы:

lat/(previous # calculated above)

Проблема в том, что мое окно изменяется от 0,0 до 600 600, как объяснено выше, и я могу получить отрицательные точки, и я не знаю, как их перемещать, и я не знаю, как отцентрировать их вокруг 300 300, когда границы изменяются.

На данный момент, пока я делаю центр (0,0) в терминах (x, y), а не пикселей, точки изображаются там, где они должны идти.
Например, если x равен от -1 до 1, а y равен от -3 до 3, (300px, 300px) будет (0,0).

Если я изменю границы, скажем, x -.5 к 1 и y -3 к .5, (300px, 300px) будет (.25, 1.25). Тем не менее, расчеты выше с этими числами.

1.5/600 = .0025 ----> 1px = .0025lat.
3.5/600 = .0058 ----> 1px = .0058lon.

Затем, принимая среднюю точку (.25,1.25):

.25/.0025 = 100px
1.25/.0058 = 215px

что явно не 300px, 300px, несмотря на то, что в центре графика.

Любые идеи будут чрезвычайно полезны.

0

Решение

Если вы хотите отрегулировать координаты по центру, то может быть что-то подобное?

Coord coordsFromCenter(Coord old_coord, float height, float width)
{
Coord new_center;

float new_x_center = width/2.0;
float new_y_center = height/2.0;

new_center.set_x(old_coord.get_x() - new_x_center);
new_center.set_y(old_coord.get_y() - new_y_center);

return new_center;
}
1

Другие решения


По вопросам рекламы [email protected]