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

相关推荐
那个松鼠很眼熟w12 分钟前
4. GB2312字符集,以及字符编码
笔记
浮江雾31 分钟前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
ysa0510301 小时前
【板子】欧拉序
c++·笔记·算法·深度优先·图论
ljt27249606612 小时前
CPU:如何搭建完整可用计算机
人工智能·笔记
马里马里奥-2 小时前
大模型应用开发笔记03:LangChain 中间件实战
笔记·中间件·langchain
疯狂打码的少年2 小时前
【软件工程】软件开发模型:螺旋模型(风险驱动)
笔记·软件工程
笑鸿的学习笔记3 小时前
操作系统笔记之CPU、寄存器、高速缓存、寻址总线的相对位置及寄存器,高速缓存区,内存,硬盘哪个快
笔记
Turbo正则3 小时前
机器学习入门笔记 | 基础算法及其应用场景
笔记·算法·机器学习
取地址符14 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
ysa05103014 小时前
【板子】ST表
c++·笔记·算法·板子