0

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

让我用一个例子来解释这一点。例如,我决定用 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 中的点,我尝试渲染一个球体,但失败了。在搜索了我的所有代码(除此之外)后,我怀疑我在计算这些坐标时犯了一个错误。那么有没有人可以帮助我检测我的错误?

4

0 回答 0