在opengl中使用球坐标
using spherical coordinates in opengl
我正在尝试使用球坐标围绕中心点绘制点。我知道这不是在 OpenGL 中绘制球体的最有效方法,但我想这样做是为了更好地理解球坐标。
我想以特定角度逐步通过每个点,因此为此我有一个嵌套的 for 循环迭代通过 theta 0 - 360 和 phi 0-360,我试图获得这些步骤中的每一个的笛卡尔坐标并将其显示为一个点。
到目前为止我有这个:
float r = 1.0;
for( float theta = 0.0; theta < 360.0; theta += 10.0){
for(float phi = 0.0; phi < 360.0; phi += 10.0){
float x = r * sin(theta) * cos(phi);
float y = r * sin(theta) * sin(phi);
float z = r * cos(theta);
}
}
我存储这些点并显示它们。显示功能工作正常,因为我以前用它来显示其他点结构,但由于某种原因我无法让它工作。
我也尝试过将角度从度数转换为弧度:
float rTheta = theta * M_PI * 180.0;
float rPhi = phi * M_PI * 18.0;
因为 sin()
和 cos()
都使用弧度,但产生相同的结果。
我是不是做错了什么,严重误解了什么?
角度x
的度数到弧度的换算中,正确的公式是x * M_PI / 180.
。
我正在尝试使用球坐标围绕中心点绘制点。我知道这不是在 OpenGL 中绘制球体的最有效方法,但我想这样做是为了更好地理解球坐标。
我想以特定角度逐步通过每个点,因此为此我有一个嵌套的 for 循环迭代通过 theta 0 - 360 和 phi 0-360,我试图获得这些步骤中的每一个的笛卡尔坐标并将其显示为一个点。
到目前为止我有这个:
float r = 1.0;
for( float theta = 0.0; theta < 360.0; theta += 10.0){
for(float phi = 0.0; phi < 360.0; phi += 10.0){
float x = r * sin(theta) * cos(phi);
float y = r * sin(theta) * sin(phi);
float z = r * cos(theta);
}
}
我存储这些点并显示它们。显示功能工作正常,因为我以前用它来显示其他点结构,但由于某种原因我无法让它工作。
我也尝试过将角度从度数转换为弧度:
float rTheta = theta * M_PI * 180.0;
float rPhi = phi * M_PI * 18.0;
因为 sin()
和 cos()
都使用弧度,但产生相同的结果。
我是不是做错了什么,严重误解了什么?
角度x
的度数到弧度的换算中,正确的公式是x * M_PI / 180.
。