Тема: getMathElement()
Показать сообщение отдельно
Старый 11.04.2012, 17:36   #4
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: getMathElement()

Сообщение от burovalex Посмотреть сообщение
Подскажите пожалуйста еще в каких ячейках находятся поворот и смещения, для полной информации
смещение тут:
1 0 0 0
0 1 0 0
0 0 1 0
X Y Z 1
т.е.
X# = GetMatElement ( Entity, 3, 0 )
Y# = GetMatElement ( Entity, 3, 1 )
Z# = GetMatElement ( Entity, 3, 2 )
матрица вращения это вот эта 3x3 часть:
X Y Z 0
X Y Z 0
X Y Z 0
0 0 0 1
извлечь из нее углы Эйлера можно так:
XAxisY# = GetMatElement ( Entity, 0, 1 )

YAxisY# = GetMatElement ( Entity, 1, 1 )

ZAxisX# = GetMatElement ( Entity, 2, 0 )
ZAxisY# = GetMatElement ( Entity, 2, 1 )
ZAxisZ# = GetMatElement ( Entity, 2, 2 )

Pitch# = ATan2 ( ZAxisY, Sqr ( ZAxisX * ZAxisX + ZAxisZ * ZAxisZ ) )
Yaw# = ATan2 ( ZAxisX, ZAxisZ )
Roll# = ATan2 ( XAxisY, YAxisY )
Но для блица это не практично, т.к. встроеные EntityPitch|Yaw|Roll будут производительнее, к тому-же эти углы и смещения глобальны, т.е. с учетом трансформации всех предков энтити.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Платон Александрович за это полезное сообщение:
burovalex (11.04.2012), HolyDel (11.04.2012), Randomize (12.04.2012), Черный крыс (31.05.2012)