Я работаю с гироскопом и получаю вращательную матрицу, которую я буду использовать для поворота объекта на SceneKit.OpenGL: ось переключения и инвертирования
Это вращение матрица исходя из гироскопа использует ось iPhone в:
Но мое приложение работает пейзаж с кнопкой дома слева. Итак, мои оси являются: Y
- х = Iphone в
- у = X отрицательного Iphone в
- г Z = Iphone в
Итак, мне нужно взять матрицу поворота я есть получая от акселерометра, основанного на [x, y, z] и создавая новый, который является [y, -x, -z] ... (да, отрицательный Z, потому что для этого конкретного случая мне нужен объект для поворота против Z).
Хорошо, что это вращение отрицательно, но как переключить ось X и Y из исходной матрицы в новую?
Это то, что я до сих пор:
// I create a GLKMatrix4 from the CMRotationMatrix
GLKMatrix4 transform = GLKMatrix4Make(rotMatrix.m11, rotMatrix.m21, rotMatrix.m31, 0.0,
rotMatrix.m12, rotMatrix.m22, rotMatrix.m32, 0.0,
rotMatrix.m13, rotMatrix.m23, rotMatrix.m33, 0.0,
0.0, 0.0, 0.0, 1.0);
GLKMatrix4 negativeX = GLKMatrix4MakeXRotation(-M_PI);
GLKMatrix4 rotate = GLKMatrix4Multiply(transform, negativeX);
GLKMatrix4 negativeZ = GLKMatrix4MakeZRotation(-M_PI);
rotate = GLKMatrix4Multiply(rotate, negativeZ);
// ok, now I have [-x, y, -z]
// how do I switch X and Y and transform that into [y, -x, -z]?
получил. ИДЕАЛЬНО! БЛАГОДАРЯ!!!!! – SpaceDog