我有 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)
添加回答
舉報
0/150
提交
取消