точка стояния

8 года назад от Екатерина Круглова

1 ответ

0 голосов
С начало вам надо чётко определить, что такое "Углы поворота объекта по всем трём осям". Поскольку повороты не коммутируют, то задание поворота несколькими углами - это всегда последовательность поворотов относительно некоторых осей на определённый угол (или поворот вокруг одного вектора - но это уже кватернионное представление) . Например, углы Эйлера - последовательность поворотов относительно OZ, OX и снова OZ.
 Если у вас объект получается из базового объекта последовательностью поворотов (OX, a) , (OY, b) , (OZ, c) (a, b, c - углы в радианах) , и есть вектор (dx, dy, dz) в локальной системе кординат повёрнутого объекта, то получить сдвиг объекта на этот вектор в глобальной системе кординат можно так:
 dy1=cos (a) *dy+sin (a) *dz; dz1=-sin (a) *dy+cos (a) *dz; / поворот относительно OX
 dx1=cos (b) *dx-sin (b) *dz1; dz2=sin (b) *dx+cos (b) *dz1; / поворот относительно OY
 dx2=cos (c) *dx1+sin (c) *dy1; dy2=-sin (c) *dx1+cos (c) *dy1; / поворот относительно OZ
 Тогда (dx2, dy2, dz2) - искомый вектор сдвига.
8 года назад от Рустем Фатхетдинов

Связанные вопросы