将3分量Android旋转矢量转换为(4分量)四元数

时间:2020-07-02 13:43:51

标签: android unity3d

我正在尝试实现以下应用程序:

我将智能手机的3分量Android旋转矢量流式传输到计算机上,在该计算机中Unity中显示了一个对象,该对象将根据智能手机的旋转而旋转。

如何将3分量的Android旋转矢量转换为四元数以用于3D应用程序(例如在Unity中)?

1 个答案:

答案 0 :(得分:0)

Android旋转矢量由三个或四个组件组成(因为其中一个是多余的!)。 我将在给出Android旋转矢量的3分量表示的情况下,描述如何定义四元数。

旋转矢量的三个元素等于*一个四元数的最后三个分量:

< q0, q1, q2, q3 > = < (θ/2), xsin(θ/2), ysin(θ/2), z*sin(θ/2) >

由于它是一个 unit 四元数(其长度等于1),因此我们可以从其余三个四元数推导第一个四元数值q0

我们知道

1 = |q| = sqrt( q0^2 + q1^2 + q2^2 + q3^2 )

我们可以转变成

q0 = sqrt( 1 - q1^2 - q2^2 - q3^2 ) 

Voilà,到了。第四四元数分量q0