任何人都可以告诉我如何获得四元数的反转。
q-1=q'/(q*q')
q'=四元数共轭
(q * q')=四元数的范数*四元数的范数
我有我的四元数:( C语言)
quat.x = 0.0;
quat.y = 1.0;
quat.z = 0.0;
quat.w = 45.0;
第一个共轭:
quat.conjx = 0.0;
quat.conjy = -1.0;
quat.conjz = 0.0;
quat.conjw = 45.0;
下一篇:Norm
quat.norm = sqrt(quat.x*quat.x + quat.y*quat.y + quat.z*quat.z + quat.w*quat.w);
好的但是......如何使用C语法计算逆?这是对的吗?:
quat.invx = quat.conjx / (quat.norm*quat.norm);
quat.invy = quat.conjy / (quat.norm*quat.norm);
quat.invz = quat.conjz / (quat.norm*quat.norm);
quat.invw = quat.conjw / (quat.norm*quat.norm);
非常感谢您的帮助
答案 0 :(得分:2)
四元数 x + i y + j z + k w 的共轭定义为< em> x - i y - j z - k w 。没有三个单独的共轭。另外,请勿尝试将norm
,invx
,invy
,invz
,conjx
等添加到您的四元数结构中。只需写下:
typedef struct {
double x;
double y;
double z;
double w;
} quaternion;
然后编写将四元数作为参数并返回它们的函数。例如,写:
// Construct and return the conjugate of q.
quaternion q_conjugate(const quaternion q) { ...}
// Divide quaternion q by scalar d
quaternion q_divide(const quaternion q, const double divisor) {...}
// Compute the squared norm of q
double q_squared_norm(const quaternion q) {...}
// Compute the inverse of q
quaternion q_inverse(const quaternion q);