反四元数

时间:2013-03-15 05:21:24

标签: c quaternions

任何人都可以告诉我如何获得四元数的反转。

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);

非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

四元数 x + i y + j z + k w 的共轭定义为< em> x - i y - j z - k w 。没有三个单独的共轭。另外,请勿尝试将norminvxinvyinvzconjx等添加到您的四元数结构中。只需写下:

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);