【问题标题】:Object quaternion parallel or perpendicular to all basis vectors平行或垂直于所有基向量的对象四元数
【发布时间】:2012-01-11 17:36:58
【问题描述】:

给定一个对象四元数 q,以及构成 3D 空间的基向量 vx、vy、vz,如何检查四元数是平行还是垂直于所有基向量?

例如,我有基向量:

vx = (0.447410, 0, -0.894329)
vy = (0, 1, 0)
vz = (0.894329, 0, 0.447410)

四元数

q(w,x,y,z) = (-0.973224, 0, -0.229860, 0)

我知道四元数与所有基向量垂直或平行(或反平行),但我如何实际计算它?

另一个例子,

q(w,x,y,z) = (0.823991, 0, 0.566602, 0)

这与所有的基向量都不是垂直或平行(或反平行)。

【问题讨论】:

标签: math computational-geometry quaternions


【解决方案1】:

关于术语的说明:严格来说,“四元数垂直于基向量之一”的确切含义尚不清楚......四元数和 3-D 向量不能以这种方式进行比较。但是,四元数可以被认为是旋转轴(3-D 矢量)和标量旋转角度的表示,所以我假设你想知道是否 旋转轴垂直于基向量之一。

对于被视为 3-D 旋转的单位四元数,惯例是对于 q=(w,x,y,z), x、y 和 z 沿旋转轴形成一个 3-D 向量(我们称之为 qv),w=cos(alpha/2) 表示旋转角度 alpha。

在您的情况下,qv = (x,y,z) = (0, -0.229860, 0)。 vx、vy 和 vz 都是单位向量, 因此,如果将 qv 归一化为单位向量,则更容易看到发生了什么。 除以它的长度 (0.229860) 得到 qv_unit = (0, -1, 0)。寻找 qv_unit 与 vx、vy、vz 的夹角,使用点积:

对于单位向量 v1=(a, b, c) 和 v2=(d, e, f):

cos(theta) = v1 dot v2 = ad + be + cf

qv_unit dot vx = 0*.447410 + -1*0 + 0*-894329 = 0 = cos(theta),所以 theta=pi/2,并且 我们看到 qv_unit 垂直于 vx。

qv_unit dot vy = 0*0 + -1*1 + 0*0 = -1 = cos(theta),所以 theta=pi,qv_unit 为 与 vy 反平行。

qv_unit dot vz = 0*.894329 + -1*0 + 0*.447410 = 0 = cos(theta),所以 theta=pi/2,并且 qv_unit 也垂直于 vz。

【讨论】:

  • 这恰好在特定情况下有效,但如果四元数是:q(w,x,y,z) = (0.823991, 0, 0.566602, 0)?我知道旋转不垂直于任何轴。虽然这两个点积给出了 0。
  • @Quaternional:您的问题说您“知道四元数垂直于基向量之一”,但现在您说“旋转不垂直于任何轴”。所以我不知道你真正在问什么......请澄清。基向量和四元数从何而来?上下文是什么?
  • 实际上,我想知道四元数旋转是垂直还是平行于所有轴。很抱歉造成混乱。
  • @Quaternional:如果旋转轴与一个基向量平行或反平行,则如果 vx、vy、vz 正交,则它必须垂直于其他基向量。无论如何,您需要知道的一切都在点积中,我向您保证,只要 q=[w,x,y,z] 具有我在回答中描述的解释,它就适用于一般情况。跨度>
  • 四元数表示对象的旋转。当四元数为 (-0.973224, 0, -0.229860, 0) 时,我可以亲眼看到对象的旋转平行或垂直于所有基向量,但当四元数为 (0.823991, 0, 0.566602, 0)。你不能只忽略 w 组件!
【解决方案2】:

我通过将四元数转换为矩阵来解决这个问题。从矩阵中取出基向量,计算矩阵基向量与原始基向量的点积。如果它们都是 0 或 1,则四元数平行或垂直于原始基向量。

【讨论】:

  • 好的,我想我明白误会是什么了。您想知道使用四元数 q 旋转原始 x、y、z 基向量的结果是否给出了与您的 vx、vy、vz 平行或垂直的结果 rx、ry、rz。但是您问 q 与 vx、vy、vz 平行/垂直——这并不是一个定义明确的概念,我猜错了你的意思。无论如何,我很高兴您的问题得到了解决,希望讨论对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 2017-06-18
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2016-06-22
相关资源
最近更新 更多