gpt4 book ai didi

c++ - OpenGL:为什么具有相同 X 坐标的球体在输出中不在一条直线上?

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:30 25 4
gpt4 key购买 nike

我正在开发一个 C++ 项目,它是用 MFC 模板编写的;使用 OpenGL 库,我在一个特殊坐标中绘制球体。我使用 glTranslatef 函数转到这个特殊坐标,但是当我绘制两个具有相同 X 坐标的球体时,看起来它们的 x 有所不同。

例如,当我在 (x,y,z):(1,1,0)(x,y,z):(1,2 ,0) 输出是这样的:

the picture for my output

此 View 来自上图: enter image description here

这是我绘制球体的函数:

void MYGLView::DrawSphere(double X_position, double Y_Position, double Z_Position,
GLdouble radius, int longitudeSubdiv, int latitudeSubdiv,
double Red, double Green,double Blue)
{
gluQuadricDrawStyle(m_quadrObj, GLU_FILL);

float shininess = 64.0f;
glPushMatrix();
glTranslatef(X_position,Y_Position,Z_Position);
glColor3f(Red,Green,Blue);
gluSphere(m_quadrObj,radius,longitudeSubdiv,latitudeSubdiv);
//glTranslatef(-3,0,0);
glFlush();
glPopMatrix();
}

你能告诉我哪里出错了吗?

最佳答案

您的相机稍微向下转动。因此,所有垂直线都有一个消失点。如果您希望屏幕上的所有垂直线都平行,则不允许相机向下倾斜。或者,您可以使用平行投影,其中所有在世界上平行的线在图像中保持平行。

关于c++ - OpenGL:为什么具有相同 X 坐标的球体在输出中不在一条直线上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com