uNmAnNeR
offline
Опыт:
40Активность: |
Поворот вектора относительно вектора
Задача сводится к следующей:
Quat - Вектор оси, вокруг которой следует осуществить поворот. Vec - Поворачиваемый вектор. X,Y,Z - координаты их общей точки. Реализация 1 (по формуле a′ = P · a = cosθa + sinθm × a ):Код:
Реализация 2 (через кватернион):Код:
Все это дело происходит в таймере с малым периодом. Результат обоих случаев одинаковый: точка постепенно смещается к центру, т.е начинает вращаться по окружности с центром в X,Y,Z (длина вектора Vec вроде не изменяется, хотя не точно, на глаз смотрел). Проще говоря, угол между осью и вектором постепенно увеличивается до 90°. Прошу указать на ошибку, ибо сам в этом только начал разбираться, не оч шарю ): П.С. Вращение в сферических координатах и матрицы - не вариант. |
03.06.2009, 11:35 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
попробуй при каждом вращении наращивать угол и создавать кватернион заново, и уножать на вектор, который будет константный |
03.06.2009, 16:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
uNmAnNeR
offline
Опыт:
40Активность: |
Все тоже :( , еще забыл сказать, что QuatZ = 0. |
05.06.2009, 10:18 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
uNmAnNeR
offline
Опыт:
40Активность: |
С проблемой разобрался. Приведенные выше алгоритмы работают только для ортогональных векторов. |
06.06.2009, 11:21 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|