四元数与旋转向量的转化

float r1, r2, r3;     	//旋转向量
float qx, qy, qz, qw; 	//四元数
float theta;	        //角度

//四元数转旋转向量
float theta = 2 * acosf(qw);
r1 = qx / sinf(theta * 0.5f) * theta;
r2 = qy / sinf(theta * 0.5f) * theta;
r3 = qz / sinf(theta * 0.5f) * theta;

//旋转向量转四元数
theta = sqrt(r1 * r1 + r2 * r2 + r3 * r3);
qw    = cosf(theta * 0.5f);
qx    = r1 * sinf(theta * 0.5f) / theta;
qy    = r2 * sinf(theta * 0.5f) / theta;
qz    = r3 * sinf(theta * 0.5f) / theta;
posted @ 2022-06-09 10:03  narjaja  阅读(988)  评论(0编辑  收藏  举报