Lew*_*nci 1 c# quaternions xamarin xamarin.forms
我正在尝试使用https://docs.microsoft.com/en-us/xamarin/essentials/orientation-sensor上的这个库来计算设备的俯仰、偏航和滚转。图书馆工作,并以四元数返回。
我希望能够将这个四元数转换为 360 度空间中的俯仰、偏航和滚动,以及从 0 到 100 的百分比,表示设备“向”360 度旋转的距离。
我一直在研究这个,并发现了各种数学方程,用数学符号表示,如何实现这样的事情。这些文件还讨论了欧拉角、弧度和其他各种我没有任何概念的概念。
C# 中有没有办法将四元数转换为 a) 360 度空间中的角度,以及 b) 设备在某个轴上旋转的 0-100 百分比?
谢谢!
根据文件:
四元数值与绕轴的旋转密切相关。如果旋转轴是归一化向量 (ax, ay, az),旋转角度为 ?,则四元数的 (X, Y, Z, W) 分量为:
(ax·sin(?/2), ay·sin(?/2), az·sin(?/2), cos(?/2))
首先,?从W:
var ? = Math.Acos(W)*2;
Run Code Online (Sandbox Code Playgroud)
然后,得到ax,ay,az通过:
var ax = X / Math.Sin(Math.Acos(?));
var ay = Y / Math.Sin(Math.Acos(?));
var az = Z / Math.Sin(Math.Acos(?));
Run Code Online (Sandbox Code Playgroud)
四元数的轴角是 [ax, ay, az]。
例如,a Quaternionof[0,0,0.7071068,0.7071068]将有一个Axis-Angleof [0,0,1]。您可以认为它在 Z 轴上旋转了 90 度。