OpenGL基于Lat/Lon坐标绘制直线

本文关键字:绘制 坐标 Lon 基于 Lat OpenGL | 更新日期: 2023-09-27 18:24:56

我需要一些帮助来绘制从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();

以下是将lat/lon转换为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"

使用转换代码,我将这些XY坐标用于36.0740197, -115.1051997

129.7896006
181.797964976478

如果有人能为我指明正确的方向,我将不胜感激!

OpenGL基于Lat/Lon坐标绘制直线

我能够复制您的代码,并成功地在给定点之间划线。(你的两个点的纬度/经度坐标值太近了,不引人注意,但我能看到它们之间的线的规格。)

基于此,我想知道您在主程序中的第一个代码列表(您设置视口和绘制线的零件)放在哪里了。

尝试渲染更简单的内容,并查看OpenGL上下文是否正常工作。