Вращение объекта вокруг наклонной оси

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

Как заставить объект вращаться вокруг этого объекта? Я не смог найти ни одной формулы, которая делает это.


person Leonardo C    schedule 05.11.2011    source источник
comment
В основном вам нужно преобразовать объект в 0,0,0, чтобы он был выровнен по оси, повернуть его туда, а затем применить инверсию первого преобразования.   -  person ChrisF    schedule 05.11.2011
comment
@ChrisF Можете ли вы быть немного более конкретным? Я могу перемещать объект, но встроенных функций вращения нет. Его ориентация также не имеет значения, все, что мне нужно, это чтобы он вращался вокруг наклонной оси со скоростью 4 градуса в секунду на расстоянии 0,3.   -  person Leonardo C    schedule 05.11.2011
comment
Вы должны сгенерировать матрицы преобразования самостоятельно. Прошло некоторое время с тех пор, как я зарабатывал на жизнь подобными вещами, поэтому у меня нет примеров.   -  person ChrisF    schedule 05.11.2011
comment
@ChrisF Мне не нужны примеры, подойдет теория. Как мне сгенерировать матрицу, у меня есть только эти 2 массива. Есть векторные функции, но я не совсем уверен, что с ними делать. Я знаю, как сделать вращение в 2D, но не могу сделать это для 3D.   -  person Leonardo C    schedule 05.11.2011


Ответы (2)


Попробуй это:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslate(-x,-y,-z);
glRotate(angle,nx,ny,nz);
glTranslate(x,y,z);
person Tal Darom    schedule 05.11.2011
comment
Спасибо, но тег opengl был случайностью. Можно ли вычислить положение точки, а не использовать функции поворота? - person Leonardo C; 05.11.2011

Используйте матрицу вращения для оси и угла. Новое положение p' точки p на объект

p' = center + R(angle, axis) * (p - center)

где R(angle, axis) — матрица, которая поворачивается на angle вокруг axis, а center — точка, через которую проходит ось. Ответ Тал Дарома такой же, только в нотации OpenGL.

person antonakos    schedule 05.11.2011