В
С++ API матрица трансформации представляется классом
CATMathTransformation.
Сама трансформация состоит из:
- матрицы [3x3] задающей поворот/масштаб/зеркалировкние вдоль каждой из осей;
- вкетора [3] задающего смешение;
- Код: Выделить всё
a11 a12 a13 u1
M = [ a21 a22 a23 ] V = [ u2 ]
a31 a32 a33 u3
Представление 3 кооординаты (точка позиционирования) + 3 угла (крен/дифферент/тангаж, либо углы Эйлера, либо ещё что нибудь) не предполагает масштабирования/зеркалирования.
В матрицу нужно записать коэффициенты соответствующие требуемым углам (формулы есть в справочниках), а в вектор смещения - координаты точки позиционирования. С++ класс
CATMathTransformation предостваляет методы для задания позиции и частично методы для задания углов.
В
макросах используется та же трансформация записанная как массив из 12 элементов типа Double по схеме:
- Код: Выделить всё
[ a11, a12, a13, a21, a22, a23, a31, a32, a33, u1, u2, u3 ]
ну и вся математика "вручную"
