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