Иногда появляется необходимость развернуть объект из одного положения в другое. Для этого нужно извлечь угол из текущей матрицы и добавить дельта угол, в результате чего получим угол на который будет повернут объект. Итак, сперва необходимо получить размер по x,y,z и исходя из этих величин и матрицы, получить матрицу вращения из которой мы уже получим угол на который повернут наш объект.
Decompose Scale factor, matrix rotation and translate vector from modelViewMatrix
Translate vector:
vt = (M41, M42, M43)T
Getting scaling factors:
sx = sqrt(M112 + M122 + M132);
sy = sqrt(M212 + M222 + M232);
sz = sqrt(M312 + M322 + M332);
Now you can work backwards for the rotation matrix:
Mrot = M11/sx M12/sx M13/sx 0
M21/sy M22/sy M23/sy 0
M31/sz M32/sz M33/sz 0
0 0 0 1
Additional functions for iOS GLKit
Continue reading