1
我需要一些关于从经纬度坐标绘制线到OpenGL画布的帮助。基于Lat/Lon坐标的OpenGL绘制线
Gl.glViewport(0, 0, simpleOpenGlControl.ClientRectangle.Width, simpleOpenGlControl.ClientRectangle.Height);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Gl.glOrtho(0, simpleOpenGlControl.ClientRectangle.Width, 0, simpleOpenGlControl.ClientRectangle.Height, -1, 1);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glBegin(Gl.GL_LINES);
Gl.glVertex2d(getX(36.0740197, -115.1051997), getY(36.0740197, -115.1051997));
Gl.glVertex2d(getX(36.0740197, -115.0845997), getY(36.0740197, -115.0845997));
Gl.glEnd();
Gl.glFlush();
而这里的方法,将纬度/经度对XY:
public static double ToRadians(double valueInDegrees)
{
return (Math.PI/180) * valueInDegrees;
}
public double getY(double lat, double lon)
{
double mercN = Math.Log(Math.Tan((Math.PI/4) + (ToRadians(lat)/2)));
return (simpleOpenGlControl.ClientRectangle.Height/2) - (simpleOpenGlControl.ClientRectangle.Width * mercN/(2 * Math.PI));
}
public double getX(double lat, double lon)
{
return (lon + 180) * (simpleOpenGlControl.ClientRectangle.Width/360);
}
然而,当我运行应用程序,没有什么是画在画布上。有任何想法吗?此外,纬度/经度坐标是对:
StartLon="-118.1624997" StartLat="33.9512797" EndLon="-118.1664997" EndLat="33.9508597"
与转换代码,我这些XY坐标36.0740197, -115.1051997
129.7896006
181.797964976478
如果有人能在正确的方向指向我,我更欣赏它!
首先,你确定OpenGL控件已经成功初始化了吗?你自己在做吗?其次,为什么不在'glOrtho'中指定所需的坐标系而不是自己进行计算?最后,你使用双缓冲和'Gdi.SwapBuffers'吗? – Dmitry 2014-09-27 08:17:47
感谢您的回复。我如何用'glOrtho'定义一个坐标系?这是否意味着我可以将lat/loncoordinates插入到它中,并且会绘制它们? – Zach 2014-09-27 15:57:39