Создаю контроллер к 3д объекту и не могу найти оптимального решения.
Направление объекта по осям х и у задаётся по координатам мыши х и у соответственно.
Сам поворот осуществляется через

Код AS3:
matrix.prependRotation(angleX, Vector3D.X_AXIS);
matrix.prependRotation(angleY, Vector3D.Y_AXIS);
далее необходимо передвинуть объект по его направлению. По моей логике необходимо вектор направления умножить на скорость и это произведение суммировать с координатами "на данный момент". Как я понял про метод appendTranslation у Matrix3D, он просто добавляет указанные числа к координатам объекта. Получается если некоторые координаты будут отрицательные а он подвинет объект на положительные числа, то объект сдвинется не по вектору направления объекта... надеюсь не очень запутанно изъясняюсь?
Получается необходимо вытащить из матрицы вектор направления (decompose?), его множить на скорость и двигать объект. На мой взгляд идеальное решение в этом случае, чтобы вектор направления всегда был по длине равен единице, тогда при умножении на скорость, координаты просто принимали бы нужный знак.
пытался это осуществить, но на практике получился расход от 1.6 до 0.4
Подскажите нормальное решение.
P.S. как правильно из матрицы вытянуть вектор направления объекта?