当我在 ARKit 中绕 y 轴旋转我的设备时,我试图计算它的旋转。为澄清起见,ARKit 中的 y 轴是垂直于地面向上指向的轴。
我使用 eulerangles 来获得这样的相机旋转:
var alpha = sceneView.pointOfView?.eulerAngles.y
这在 0=
通过使用四元数而不是 eulerangles 解决了这个问题。这是我使用的代码:
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)) )
我使用了 this website 中列出的四元数到标题/欧拉转换.
关于ios - 在 ARKit 中获取设备绕世界原点 y 轴的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54893331/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |