Render.ru

В максе замечены ошибки...

#1
Доброе время!

При написании очередного плагина к максу (макс SDK) обнаружилась такая неприятная ошибочка:

Если имеются две матрицы преобразования пространства ТМ1 и ТМ2 и мы хотим получить их разность (состояние ТМ1 относительно ТМ2) мы делаем следующее:

ТМ = ТМ1 * Inverse(ТМ2);

Однако результ получается ошибочным. Т.е. перенос ТМ (translation = ТМ->GetTrans()) не равен разности переносов этих двух матриц

translation != translation1 - translation2....

В чем беда? Может кто разобрался с этим?
 
#2
Если говорить о матрице в чистом виде, то работает. MAXScript есть зеркальное отражение SDK в данном случае

in MAXScript run

m1 = matrix3 [1,0,0] [0,1,0] [0,0,1] [-100,-100,-100]
m2 = matrix3 [1,0,0] [0,1,0] [0,0,1] [100,100,100]
a=m1.translation - m2.translation

m_d = m1*(inverse(m2))
b=m_d.translation

a==b
returns true

проверь может где-то запутался в local-world, or parent-child relations.
 
#4
Все таки ошибки (более точно сказать - погрешности) существуют. Правда при больших углах поворота они превращаются в полную ерунду. Именно в функции Inverse() это и проявляется. Но я обошел эту преграду. Спасибо за отклик
 
#6
PLUG, ты и раньше свой мэйл указал, а вот plug свой мэйл не оставил...
 
Сверху