OpenGL вращается вокруг места - PullRequest
6 голосов
/ 24 апреля 2009

Я хочу повернуть gluSphere вокруг неподвижной точки в круговом движении, как планета, вращающаяся вокруг Солнца.

Будет ли лучше использовать glRotatef или glTranslate? Если да, то в каком порядке мне их называть?

Ответы [ 3 ]

4 голосов
/ 24 апреля 2009

Вам придется сделать немногое из обоих:

  • Убедитесь, что gluSphere «направлен» на фиксированную точку, чтобы перемещение вперед относительно сферы приблизило вас к центру ее орбиты
  • glTranslatef gluSphere вперед к точке, вокруг которой вы хотите его вращать
  • glRotatef направление, в котором вы хотите, чтобы сфера вращалась
  • glTranslatef назад так же далеко, как вы пошли вперед

Таким образом, ваша сфера остается на том же расстоянии от центра, но переводится «вокруг» по хорошей орбите.

2 голосов
/ 24 апреля 2009

Перевести от центра, а затем повернуть полностью

0 голосов
/ 24 апреля 2009

glRotatef умножит текущую матрицу на матрицу вращения. Это может (с учетом правильного вектора) сделать то, что вы пытаетесь.

glTranslatef умножит текущую матрицу на матрицу перевода, которая будет эффективно «перемещать» объект, а не вращать его, поэтому он не будет тем, что вы хотите.

...