• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 ARKit 中获取设备绕世界原点 y 轴的旋转

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:23:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

我使用 eulerangles 来获得这样的相机旋转:

var alpha = sceneView.pointOfView?.eulerAngles.y

这在 0= 时大致有效,但是对于应该是其他角度的情况,我得到了错误的读数。我怀疑这与万向节锁定有关,并且我必须以某种方式使用四元数才能获得正确的角度,而不管象限如何。非常感谢任何帮助!



Best Answer-推荐答案


通过使用四元数而不是 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap