我需要帮助从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);
}
但是,当我运行应用程序时,画布上没有任何内容。有任何想法吗?此外,Lat / Lon坐标成对出现:
StartLon="-118.1624997" StartLat="33.9512797" EndLon="-118.1664997" EndLat="33.9508597"
使用转换代码,我为36.0740197, -115.1051997
129.7896006
181.797964976478
如果有人能指出我正确的方向,我会非常感激!
答案 0 :(得分:0)
我能够复制您的代码并成功在给定点之间绘制线条。 (你的两个点的纬度/经度坐标值太接近了,但我能看到它们之间的线条规格。)
基于此,我想知道你在主程序中放置了第一个代码清单(设置视口和绘制线的部分)。
尝试渲染更简单的东西,看看你的OpenGL上下文是否正常工作。