Кватернион после лерпа, что может случиться...

Программирование на Юнити.

Кватернион после лерпа, что может случиться...

Сообщение Paul Siberdt 14 янв 2010, 15:04

Извиняюсь, у меня почти истерика...
Считаю Dot двух параллельных кватернионов и получаю -1.
Сами ротации выглядат так:
(0.0, 0.7, 0.0, -0.7) (0.0, -0.7, 0.0, 0.7)

Вопрос:
Светит ли мне что огрести в будущем, считая эти две ротации равными, или лучше перестраховаться пересчетом:
Код: Выделить всё
   q.x = -q.x;
   q.y = -q.y;
   q.z = -q.z;
   q.w = -q.w;

:-s
Последний раз редактировалось Paul Siberdt 14 янв 2010, 16:19, всего редактировалось 2 раз(а).
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Идентичность кватернионов

Сообщение Paul Siberdt 14 янв 2010, 15:21

сорри, разобрался, сам дурак :o)
... блин.. не разобрался :(
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

РЕШЕНИЕ

Сообщение Paul Siberdt 14 янв 2010, 16:17

Он-па, матих! 8()

Запоминайте вот такую штуку на будущее:

Если приспичило считать дот-продукт между ротациями, а перед этим была заюзана интерполяция, имеем в виду:
qA = Quaternion.Lerp ( qA, qB, factor)

Здесь, если factor != 1 (а нахрена ему быть == 1?), то в результате лерповой цепочки qA поменяет свои компоненты на противоположные. То бишь, qA.x = -qA.x и так далее.
Соответственно, Dot этих кватернионов, при их параллельности и однонаправленности даст -1

Если же вы хотите сохранить компоненты кватерниона и получить верный дот == 1 следует использовать формулу:
qA = Quaternion.Lerp ( qB, qA, (1-factor))

Возможно, все про это знают со времен, когда сосали мамину сиську, но вот мне помог с этим разобраться "физический" программист, причем советом "а чо будет, если поменять местами?" :-?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15