OpenGL围绕一个点旋转

6

我想让一个gluSphere以固定点为中心做圆周运动,就像行星绕着太阳转一样。

最好使用glRotatef还是glTranslate呢?如果使用,应该按什么顺序调用它们?

3个回答

4

你需要做一些事情:

  • 确保 gluSphere "面向" 固定点,这样相对于球体的前进会让你更接近其轨道中心
  • glTranslatefgluSphere 前移到想要它绕着旋转的点
  • glRotatef 确定球体绕行的方向
  • glTranslatef 向后移动与前进距离相同的距离

这样,你的球体就能在一个漂亮的轨道上绕行,而与中心的距离保持不变。


2

将其翻译为远离中心,然后旋转到最大角度


-2

glRotatef会将当前矩阵乘以一个旋转矩阵。如果向量正确,这可以实现您想要的效果。

glTranslatef会将当前矩阵乘以一个平移矩阵,这将有效地“移动”对象,而不是旋转它,因此这不是您想要的。


对于一个圆形运动,我应该使用哪个glRotatef函数来围绕一个固定点旋转? - user64392
我认为可以这样说,他需要每个对象 - 先将对象移离原点,然后再绕着原点旋转。(其中“原点”是您想要围绕其旋转的中心) - Jonathan Hartley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接