Opengl 求一个点的笛卡尔坐标,该点的纬度&;已知经度指数

Opengl 求一个点的笛卡尔坐标,该点的纬度&;已知经度指数,opengl,latitude-longitude,cartesian-coordinates,Opengl,Latitude Longitude,Cartesian Coordinates,对于我的项目,我需要找到一个点的笛卡尔坐标,该点的位置以纬度和经度表示 让我用一个例子来解释这一点。例如,我决定用30个纬度和30个经度来表示我们的世界,我的世界的半径是R。现在我试着写一个函数,以纬度和经度指数为参数,返回这个点的坐标。原型将是: cartesianCoordinates(int latitudeIndex, int longitudeIndex,int radius ); 为了做到这一点,我编写了以下代码: int latNum=30,lonNum=30; vectorzf

对于我的项目,我需要找到一个点的笛卡尔坐标,该点的位置以纬度和经度表示

让我用一个例子来解释这一点。例如,我决定用30个纬度和30个经度来表示我们的世界,我的世界的半径是R。现在我试着写一个函数,以纬度和经度指数为参数,返回这个点的坐标。原型将是:

cartesianCoordinates(int latitudeIndex, int longitudeIndex,int radius );
为了做到这一点,我编写了以下代码:

int latNum=30,lonNum=30;
vectorzfloat> worldVertexDataVector;
void cartesianCoordinates(int paralelIndex,int meridianIndex,float radius )
{
    float x,y,z;
    float firstAngle,secondAngle;
    float rProj;
    firstAngle=PI/2-(PI/(latNum-1)*paralelIndex); // firstAngle is the latitude angle

    secondAngle=0+2*PI/(2*lonNum) *meridianIndex; // second angle is the longitude angle

    y=radius*sin(firstAngle);
    rProj=radius*cos(firstAngle);


    z=rProj*sin(secondAngle);
    x=rProj*cos(secondAngle);




    worldVertexDataVector.push_back(x);
    worldVertexDataVector.push_back(y);
    worldVertexDataVector.push_back(z);

}

现在,通过使用worldVertexDataVector中的点,我尝试渲染球体,但失败了。在搜索了我所有的代码(除此之外)后,我怀疑我在计算这些坐标时出错了。那么有没有人帮我发现我的错误

所以你想把球坐标转换成笛卡尔坐标,对吗?你的原型和实现不匹配,函数中的代码使用未定义的值,这些值可能与函数参数匹配,但不匹配。@Archie,不完全是,正如我所说,我只知道顶点的纬度和经度标记。例如,我想知道位于第三纬度和第五经度的点的笛卡尔坐标。@Archie很快,我就尝试实现了这一点:但首先我需要在链接中找到这两个角度。