0

我正在尝试绘制 x,y 坐标,其中窗口大小为 600 像素 x 600 像素。(0,0) 将在左上角。(300,300) 窗口的中间。(600,600) 将在右下角。我正在尝试将弧度的纬度/经度转换为像素,然后绘制它们。我正在计算 1px = ? 纬度

`fabs(lborder+rborder)/600`

我通过获取顶部和底部边界来计算 lon。然后,当我想找到特定纬度或经度的特定位置时:

lat/(previous # calculated above)

问题是我的窗口从 0,0 到 600,600 如上所述,我可以得到负点,我不知道如何移动它们,我不知道当边界改变时如何将它们集中在 300,300 左右。

目前,只要我根据(x,y)而不是像素来制作中心(0,0),点就会被绘制在它们应该去的地方。例如,如果 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。

任何想法都会非常有帮助。

4

1 回答 1

1

如果您想将坐标调整到中心,那么可能是这样的?

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;
}
于 2015-08-11T23:42:58.980 回答