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 不会出问题。

相关推荐
xUxIAOrUIII1 小时前
日常笔记-1005-1
linux·笔记·python·macos
kaixin_啊啊2 小时前
彩谱FS-13高光谱相机学习笔记
图像处理·笔记·学习·高光谱相机
Ruannn(努力版)3 小时前
Patient/public-facing dashboards-prototype dashboard display
笔记
坤坤子吖4 小时前
Python基础语法学习:列表和元组
开发语言·笔记·python·学习
by209994 小时前
list 的使用:把节点、位置和操作联系起来的综合叙述(上)
数据结构·c++·笔记·list
東隅已逝,桑榆非晚4 小时前
数据结构队列
数据结构·笔记·学习
常州晟凯电子科技5 小时前
sigmaStar SSC8836Q/SSC8826Q开发笔记之环境搭建和SDK编译
笔记·嵌入式硬件·物联网·视频编解码
_不会dp不改名_5 小时前
Games101课程笔记3--变换
笔记
一隅论数智5 小时前
RDF(Resource Description Framework)介绍和使用举例(二)
大数据·人工智能·经验分享·笔记·学习·架构·政务