我画一个椭圆形的X飞机,并设置我的角度稍有在Y轴和Z,看看中心,椭园从45度,使用gluPerspective()设置我看frustrum.

ellipse

未旋转状态,主要轴线的椭圆跨越宽度的我的视区。当我转动90度的关于我的视线,主要轴线的椭圆现在涵盖了高度的我的视,因此变形椭圆的(在这种情况下,使得它看上去小的偏心).

rotated ellipse

我需要做什么来做,以防止这种变形(或至少考虑),所以转动有关的视线保留的认述的椭圆形的主轴(在这种情况下,造成它超越了视)?

有帮助吗?

解决方案

它看起来像你使用1.0作的方方面面时你打电话gluPerspective().你应该使用宽的高度。例如,如果视为640x480,将使用1.33333作方面的参数。

其他提示

根据载规格:

void gluPerspective( GLdouble fovy,
                     GLdouble aspect,
                     GLdouble zNear,
                   GLdouble zFar )

一方面应该是一个功能窗口的宽度和高度。具体地说宽除以身高(但看分通过零)。

也许你们使用1作为一方面这是不准确的,除非你的窗口,是一个正方形。

它看起来像方面的参数上你的gluPerspective称需要的调整。看看 人页.如果你的窗口,是身体上方,本方面的比例将是1和你的问题会走开。然而,你的窗口是长方形的,因此观察锥体需要非广场。

设置方面比以window_width/window_height,你椭圆应该找正确的。注意,你会需要更新这一时窗口的调整;如果你使用过剩设置一个 glutReshapeFunc 并重新计算的影矩阵在那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top