gpt4 book ai didi

ios - 您如何使用 OpenGL 从偏航、俯仰和滚动中导出旋转矩阵?

转载 作者:行者123 更新时间:2023-11-29 12:39:59 27 4
gpt4 key购买 nike

我尝试了多种方法,但预期的矩阵不是我想要的。我想生成由姿态给出的相同旋转矩阵,但它是根据偏航、俯仰和滚动值生成的。如果有我不知道的内置函数,我会很乐意使用它。

    [self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue] withHandler:^ (CMDeviceMotion *motionData, NSError *error) {
CMRotationMatrix r = motionData.attitude.rotationMatrix;

GLKMatrix4 baseModelViewMatrix;
baseModelViewMatrix = GLKMatrix4Make(r.m11, r.m21, r.m31, 0.0f,
r.m12, r.m22, r.m32, 0.0f,
r.m13, r.m23, r.m33, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f);



GLKMatrix4 baseModelViewMatrix2 = GLKMatrix4Identity;

double yaw = motionData.attitude.yaw;
double pitch = motionData.attitude.pitch;
double roll = motionData.attitude.roll;
baseModelViewMatrix2 = GLKMatrix4RotateZ(baseModelViewMatrix2, roll);
baseModelViewMatrix2 = GLKMatrix4RotateX(baseModelViewMatrix2, pitch);
baseModelViewMatrix2 = GLKMatrix4RotateY(baseModelViewMatrix2, yaw);
//baseModelViewMatrix = GLKMatrix4Transpose(baseModelViewMatrix);



_scene.rotationMatrix = baseModelViewMatrix2;


}];

最佳答案

我最终想出了一个解决方案。我写了这个函数。

GLKMatrix4 rotationMatrix(double yaw, double pitch, double roll){
GLKMatrix4 rotationMat = GLKMatrix4Identity;

rotationMat = GLKMatrix4RotateZ(rotationMat, roll);
rotationMat = GLKMatrix4RotateX(rotationMat, pitch);
rotationMat = GLKMatrix4RotateY(rotationMat, yaw);
rotationMat = GLKMatrix4Make(rotationMat.m00, rotationMat.m02, rotationMat.m01, 0.0f,
rotationMat.m20, rotationMat.m22, rotationMat.m21, 0.0f,
rotationMat.m10, rotationMat.m12, rotationMat.m11, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f);
return rotationMat;
}

关于ios - 您如何使用 OpenGL 从偏航、俯仰和滚动中导出旋转矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com