使用四元数的最近邻居

Jos*_*osh 7 distance nearest-neighbor quaternions

给定四元数值,我想在一组四元数中找到它最近的邻居.要做到这一点,我显然需要一种方法来比较两个四元数之间的"距离".这种比较需要什么距离表示以及如何计算?

谢谢,

玩笑

JCo*_*per 10

这是一个老问题,但它似乎需要更多的答案.如果四元数是用于表示旋转的单位长度四元数,则欧几里德距离将给出一些有趣的结果,因为四元数提供旋转空间的2倍冗余表示; 即四元数及其否定代表相同的方向.在这种情况下,正确的距离度量是四元数之间的角度,约束在以下范围内[0,pi/2]:

theta = acos(q1.w*q2.w + q1.x*q2.x + q1.y*q2.y + q1.z*q2.z);
if (theta>pi/2) theta = pi - theta;
Run Code Online (Sandbox Code Playgroud)


Olh*_*sky 5

你的四元数只是一个带有方向的3D空间中的一个点吗?

然后两个四元之间的距离x1,y1,z1,w1x2,y2,x2,w2由下式给出:

distance = sqrt((x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2),假设该w组件用于定向.即,这与两个3D点之间的距离相同.

你的四元数是4D空间中的一个点吗?

然后它们之间的距离由下式给出:

distance = sqrt((x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2 + (w1-w2)^2).

这只是4D空间的扩展.这个欧几里德距离公式可以在任何维度上工作.