为了账号安全,请及时绑定邮箱和手机立即绑定

计算 2 个姿势之间的方位角差异

计算 2 个姿势之间的方位角差异

九州编程 2023-08-09 16:58:44
我有 2 个Pose代表相机的 2 个位置,我想得到它们的方位角之间的差异。旧的姿势是从具有旧相机姿势的锚点集中检索的,因此我不应该从 ARCore 的世界理解更新中得到错误。从当前帧中检索新的姿势。我尝试使用这个公式:psi = atan2(     2*(qw*qz + qx*qy),         1-2*(qy*qy + qz*qz) )然后我从新角度中减去旧角度,但没有成功:当我移动手机仅修改俯仰角度时,我得到的结果也会有所不同。我认为它不起作用,因为它假设 +Z 是垂直轴,而 +Y 是 ARCore 中的垂直轴。所以我旋转了公式中的轴,使垂直轴为 Y :psi = atan2(     2*(qw*qy + qz*qx),         1-2*(qx*qx + qy*qy) )它仍然不起作用,当我仅改变音调时,结果仍然不同。显然这不是正确的转变。如何计算相机两个姿势之间的方位角差异?这实际上可能是 Mathematics Stack Exchange 的一个问题,但我不确定我是否误解了 ARCore 或数学,所以就在这里。
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

使用以下方法计算始终以二维测量的方位角:


public float getAzimuth(PointF aim) {


    float angle = Math.toDegrees(Math.atan2(aim.x - x, aim.y - y));


    // the range of ± 90.0° must be corrected...


    if(angle < 0.0) {

        angle += 360.0;

    }

    return angle;

}

...以下计算距离的方法:


float distance = Math.sqrt((x2 – x1) / 2.0 + 

                           (y2 – y1) / 2.0 + 

                           (z2 – z1) / 2.0); 

...以及以下计算暴跌的方法:


float plunge = Math.asin((z2 – z1) / distance)


查看完整回答
反对 回复 2023-08-09
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信