我正在尝试绘制x,y坐标,其中窗口大小为600px x 600px。 (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。
任何想法都将非常有帮助。
最佳答案
如果您想将坐标调整到中心,那么可能是这样吗?
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;
}
关于c++ - 缩放时平移x,y,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31953674/