asin和atan2的区别 (CPA指向相关)

背景

在 CPA 零位系(CPA-Zero) 基础上:

绕 y 轴(俯仰轴) 转动角度 𝜃

再绕 z 轴(方位轴) 转动角度 𝜓

你现在有 CPA 零位系下的单位指向矢量:
P=(Px,Py,Pz)T \mathbf{P} = (P_x, P_y, P_z)^\mathsf{T} P=(Px,Py,Pz)T

并且已知 CPA 的几何关系:
{Px=cos⁡θcos⁡ψ Py=sin⁡ψ Pz=−sin⁡θcos⁡ψ \begin{cases} P_x = \cos\theta \cos\psi \ \\ P_y = \sin\psi \ \\ P_z = -\sin\theta \cos\psi \end{cases} ⎩ ⎨ ⎧Px=cosθcosψ Py=sinψ Pz=−sinθcosψ

(1)ψ=sin⁡−1(Py)\psi = \sin^{-1}(P_y)ψ=sin−1(Py)

这是直接利用第二个分量:

只用了 𝑃𝑦=sin𝜓

本质是在 y--z 平面投影里反算 ψ

它的隐含前提是:cosψ≥0, 也就是ψ∈−π/2​,π/2​

(2)

始正切关系式: tan⁡ψ=sin⁡ψcos⁡ψ=PyPx/cos⁡θ \tan \psi = \frac{\sin \psi}{\cos \psi} = \frac{P_y}{P_x / \cos \theta} tanψ=cosψsinψ=Px/cosθPy

简化后得到:tan⁡ψ=Pycos⁡θPx \\tan \\psi = \\frac{P_y \\cos \\theta}{P_x} tanψ=PxPycosθ

使用 atan2 函数完整象限判断的表达式:ψ=atan2⁡(Pycos⁡θ,Px) \\psi = \\operatorname{atan2}(P_y \\cos \\theta, P_x) ψ=atan2(Pycosθ,Px)

输出范围:(−π,π]

结论

反三角函数只给角度值,atan2 给方向。

所以在姿态 / 指向 / 标定问题里:

永远优先 atan2,除非你能 100% 证明 asin 不会出问题。

相关推荐
liuyicenysabel10 小时前
多服务上线日记三:
运维·服务器·笔记·学习
CHENGQUAN_kenan10 小时前
佛山亚马逊卖家出口退税合规指南|9610免税、一般贸易退税、无票采购、申报误区全覆盖
大数据·经验分享·笔记·百度
一只小小的芙厨12 小时前
基础数论总结
笔记·学习·算法
@Mike@14 小时前
09-数据库学习笔记(数据库索引与过滤器)
数据库·笔记
一米阳光866114 小时前
软考(中级)软件设计师核心笔记(9)算法——背包问题
笔记·算法·职场发展·软考·软件设计师·中级职称
Chris _data15 小时前
WPF 上位机开发学习笔记 - 第四天
笔记·学习·wpf
树的枝15 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
Wang's Blog16 小时前
PostgreSQL笔记34:索引优化策略全景解析——从B-tree到HOT的核心原理与实践
数据库·笔记·postgresql
金字塔頂の蝸牛16 小时前
商务日语口语实用手册
笔记·学习笔记·日语·外语
HwJack2017 小时前
UIAbility 生命周期全链路:从冷启动到热启动的实战笔记
笔记·华为·harmonyos