0

谁能告诉我如何得到四元数的倒数。

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;

下一个:规范

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

非常感谢您的帮助

4

1 回答 1

3

四元数x + i y + j z + k w的共轭定义为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);
于 2013-03-15T05:35:46.090 回答