Ios 获取设备绕世界原点的旋转';ARKit中的s-y轴

Ios 获取设备绕世界原点的旋转';ARKit中的s-y轴,ios,math,3d,arkit,euler-angles,Ios,Math,3d,Arkit,Euler Angles,当我在ARKit中绕y轴旋转设备时,我试图计算设备的旋转。为了澄清,Ark中的y轴是垂直于地面向上的轴 我使用eulerangles获得相机的旋转,如下所示: var alpha = sceneView.pointOfView?.eulerAngles.y 当0=通过使用四元数而不是欧拉格来求解它时,这种方法近似有效。这是我使用的代码: guard let cameraNode = sceneView.pointOfView else { return } //Get camera

当我在ARKit中绕y轴旋转设备时,我试图计算设备的旋转。为了澄清,Ark中的y轴是垂直于地面向上的轴

我使用eulerangles获得相机的旋转,如下所示:

var alpha = sceneView.pointOfView?.eulerAngles.y

0=通过使用四元数而不是欧拉格来求解它时,这种方法近似有效。这是我使用的代码:

  guard let cameraNode = sceneView.pointOfView else { return }

  //Get camera orientation expressed as a quaternion
  let q = cameraNode.orientation

  //Calculate rotation around y-axis (heading) from quaternion and convert angle so that
  //0 is along -z-axis (forward in SceneKit) and positive angle is clockwise rotation.
  let alpha = Float.pi - atan2f( (2*q.y*q.w)-(2*q.x*q.z), 1-(2*pow(q.y,2))-(2*pow(q.z,2)) )

我使用了上列出的四元数到航向/欧拉转换

Euler角度的范围取决于您定义的顺序。对于Euler角度,旋转顺序很重要(X、Y、Z或X、Z、Y即使使用相同的角度值也不能描述相同的3D旋转)。那你到底想做什么?我想你已经读过了?当我站着不动,环顾四周时,我试图得到我的设备在ARKit中绕Y轴旋转的角度。我需要获得0到360度范围内的角度,但我无法使用eulerangles。然而,我用四元数计算来解决它。你是我的救星!!!