这是我的显示方法:
void display()
{
GLfloat sphere_vertices[3]={0.0,0.0,0.0};
int theta,phi;
float x,y,z;
int off_set;
off_set=5;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for (theta=-90; theta<=90-off_set; theta+=off_set) {
for (phi=0; phi<=360-off_set; phi+=off_set)
{
//calculate X of sphere
x= cos(theta + off_set) * sin(phi + off_set);
//calculate Y of sphere
y = cos(theta + off_set) * cos(theta + off_set);
//calculate Z of sphere
z = sin(theta + off_set);
//store vertices
sphere_vertices[0]=x;
sphere_vertices[1]=y;
sphere_vertices[2]=z;
//plot new point
glVertex3fv(sphere_vertices);
printf("X is %f, Y is %f, Z is %f", x,y,z);
}
}
glEnd();
glFlush();
}
我正在计算球体表面上的点,然后绘制每个点。但我唯一得到的是屏幕左下角的一些像素
答案 0 :(得分:0)
您似乎正在尝试渲染半径为1.0的球体,其中包含大约180 / off_set
个带有360 / off_set
个点的圆形切片。你是怎么想出x,y和z的?
对于每个点,您可以在theta
上的xy平面上构建单位长度向量,然后围绕z轴旋转phi
并按比例缩放结果向量球体的半径。
在查看数学后,请确保已指定模型视图和投影矩阵,并注意如果使用标准cos / sin函数,则它们采用弧度,而不是度数。