PDA

Просмотр полной версии : Матрица 3D и поворот


Egstond
30.08.2016, 22:46
Здравствуйте, возник вопрос.
Вот что есть, матрица и ей присвоен поворот по оси Y, допустим -20 градусов

var mat:Matrix3D=new Matrix3D();
mat.appendRotation(-20,Vector3D.Y_AXIS);


Вопрос состоит в том, что допустим у нас есть матрица, к которой были применены некие повороты и нужно узнать итоговое число, на которое она была повернута.

То есть берем матрицу mat, что то с ней делаем и опа, получаем что ответ= -20. Так что с ней нужно сделать чтобы это узнать, кто нить может подсказать ?

Wolsh
30.08.2016, 23:24
var mat:Matrix3D=new Matrix3D();
mat.appendRotation(-20,Vector3D.Y_AXIS);
var v:Vector.<Vector3D> = mat.decompose();
trace(v[1].y * 180 / Math.PI); // -20.000001125733135

Egstond
30.08.2016, 23:48
Огромное спасибо !!

Добавлено через 45 минут
Что то не так..
Вот у меня есть объект, я хочу его повернуть вокруг своей оси по Y.
Стартовый поворот по формуле =-45, вращаю потихоньку.... угол идет в минус.. -50...-60.. -70.. доходит до -90 и начинает расти.. -80....-70... -45.. (хотя оборот не полный достигаем уже изначального знаечния).. далее он растет до +90, и начинает снова уменьшаться и уже когда доходит до -45 - то вот только сейчас фигура совершила полный оборот вокруг оси.. Получается что имеем 2 одинаковых угла при разном положении фигуры.. как с этим бороться ?

caseyryan
31.08.2016, 06:56
потому что углы во флеше измеряются от -180 до +180, вместо привычных 360 (и не только во флеше, кстати)

Egstond
31.08.2016, 10:58
тут по ходу от 90 до -90 с циклом.. да, понятно что это замутки 3д.. а привычные от 0 до 360 можно получить ?как нить конвертировать..

Bletraut
01.09.2016, 17:56
тут по ходу от 90 до -90 с циклом.. да, понятно что это замутки 3д.. а привычные от 0 до 360 можно получить ?как нить конвертировать..

Можно, к углу прибавить 180.