0

我正在研究 OpenGL Superbible(第 4 版)。第 4 章有一个电子围绕原子核旋转的例子。(基本上是一个大球体的小球体)。

这是渲染函数的摘录,它在原子核(另一个球体)周围的特定位置绘制一个电子(一个球体)。fElect1是一个在每次调用渲染时增加 10 度的角度。

glPushMatrix();
glRotatef(360.0f-45.0f,0.0f, 0.0f, 1.0f);
glRotatef(fElect1, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, 60.0f);
glColor3ub(56,136,21);
glutSolidSphere(6.0f, 15, 15);
glPopMatrix()

所以 - 他将视图围绕 z 轴旋转了 315 度。然后将视图围绕新旋转的 y 轴旋转角度fElect1,然后绘制球体。即,他想模拟电子绕 y 轴的轨道。结果是电子似乎在围绕球体的“倾斜”轨道上移动(倾斜是因为 x 轴倾斜了 315 度)。

但我的问题是——他为什么要在 z 轴上平移?这是否意味着电子有一种轨道,其中原子核不在其路径的中心?但是当我运行模拟时它看起来不像那样。

4

1 回答 1

1

我想也许你从错误的方向考虑操作。它们在 GL 中应用的方式,首先应用最“全局”的转换,最后应用最“本地”的转换。因此,在考虑某些事物将如何转变时,您可能需要以相反的顺序来考虑它们。

所以:

  • 您的球体是在原点生成的
  • 这在 Z 中被翻译了 60 个单位。
  • 然后它围绕 Y 轴旋转(因此它现在在 XZ 平面中以 60 个单位的距离绕原点运行)。
  • 最后,一切都围绕 Z 轴旋转,产生倾斜。
  • 这将通过任何先前的变换进一步变换,例如已经应用于“原子”和相机的任何变换。
于 2013-03-16T11:31:56.997 回答