Я пытаюсь построить график координат 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, несмотря на то, что в центре графика.
Любые идеи будут чрезвычайно полезны.
Если вы хотите отрегулировать координаты по центру, то может быть что-то подобное?
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;
}