我试图达到的效果是从相机的pointOfView
位置指向一个箭头,与x和z轴上的场景(和重力)对齐,但指向与相机相同的方向。它看起来可能是这样的:
现在,我将它的欧拉角x
和z
设置为0
,而y
设置为与ARSCNView.pointOfView.eulerAngles.y
匹配。问题是,当我旋转设备时,eulerAngles.y
可能对不同的点具有相同的值。例如,面向一个方向的设备,我的eulerAngles
是:
x: 2.52045, y: -0.300239, z: 3.12887
面向另一个方向的eulerAngles
是:
euler angles x: -0.383826, y: -0.305686, z: -0.0239297
尽管这些方向相距很远,但eulerAngles
仍然是一样的。不同的x
和z
值意味着y
值并不代表设备面临的方向。因此,我的箭头跟踪相机的方向到某个点,然后开始向相反的方向旋转。我如何将x
和z
值归零,以便得到一个真实的y
值,然后使用该值来确定箭头的方向?
发布于 2017-09-25 07:24:30
不要使用欧拉角度来检测“真实”或“真实”的值。
这些价值观总是正确的。要使用旋转,必须使用matricies或四元数。
记住。利用矩阵可以定义大量的欧拉角。
每个欧拉角与前一个角是相对的。
SceneKit以组件的相反顺序应用这些旋转: 1.第一卷2,然后偏航3,然后俯仰
所以,为了计算你的角度,我建议计算矢量,并把它投影到Oxy平面。这个角度不是‘欧拉’角。
https://stackoverflow.com/questions/46408336
复制