Cesium中的相机—方向余弦阵

前面在讨论两个不同坐标系之间的转换时都是通过欧拉旋转或者四元素来定义的。今天直接给出方向余弦阵的定义和用途。

方向余弦的定义

方向余弦是指在解析几何里,一个向量的三个方向余弦分别是这向量与三个坐标轴之间的角度的余弦。
如下图中,矢量A与坐标系三个轴 i , j , k i,j,k i,j,k的夹角为 α , β , γ \alpha,\beta,\gamma α,β,γ,则矢量A的方向余弦就是:
[ cos ⁡ ( α ) , cos ⁡ ( β ) , cos ⁡ ( γ ) ] [\cos(\alpha),\cos(\beta),\cos(\gamma)] [cos(α),cos(β),cos(γ)]
方向余弦

方向余弦矩阵

方向余弦矩阵是由两组不同的标准正交基的基底向量之间的方向余弦所形成的矩阵。方向余弦矩阵可以用来表达一组标准正交基与另一组标准正交基之间的关系。
使用 i b , j b , k b i_b,j_b,k_b ib,jb,kb表示直角坐标系 o x b y b z b ( b 系 ) ox_by_bz_b(b系) oxbybzb(b)的三个坐标轴的基向量,用 i i , j i , k i i_i,j_i,k_i ii,ji,ki表示直角坐标系 o x i y i z i ( i 系 ) ox_iy_iz_i(i系) oxiyizi(i)的三个坐标轴的基向量,则 i b , j b , k b i_b,j_b,k_b ib,jb,kb(单位向量)分别可用 i i , j i , k i i_i,j_i,k_i ii,ji,ki表示:
{ i b = ( i b ⋅ i i ) i i + ( i b ⋅ j i ) j i + ( i b ⋅ k i ) k i j b = ( j b ⋅ i i ) i i + ( j b ⋅ j i ) j i + ( j b ⋅ k i ) k i k b = ( k b ⋅ i i ) i i + ( k b ⋅ j i ) j i + ( k b ⋅ k i ) k i ( 1 ) \left\{\begin{matrix} i_b=(i_b\cdot i_i)i_i+(i_b\cdot j_i)j_i+(i_b\cdot k_i)k_i\\ j_b=(j_b\cdot i_i)i_i+(j_b\cdot j_i)j_i+(j_b\cdot k_i)k_i\\ k_b=(k_b\cdot i_i)i_i+(k_b\cdot j_i)j_i+(k_b\cdot k_i)k_i\\ \end{matrix}\right. \qquad(1) ib=(ibii)ii+(ibji)ji+(ibki)kijb=(jbii)ii+(jbji)ji+(jbki)kikb=(kbii)ii+(kbji)ji+(kbki)ki(1)
上式中,
[ ( i b ⋅ i i ) , ( i b ⋅ j i ) , ( i b ⋅ k i ) ] [(i_b\cdot i_i),(i_b\cdot j_i),(i_b\cdot k_i)] [(ibii),(ibji),(ibki)]为单位矢量 i b i_b ib 在坐标系 o x i y i z i ox_iy_iz_i oxiyizi的方向余弦;
[ ( j b ⋅ i i ) , ( j b ⋅ j i ) , ( j b ⋅ k i ) ] [(j_b\cdot i_i),(j_b\cdot j_i),(j_b\cdot k_i)] [(jbii),(jbji),(jbki)]为单位矢量 j b j_b jb 在坐标系 o x i y i z i ox_iy_iz_i oxiyizi的方向余弦;
[ ( k b ⋅ i i ) , ( k b ⋅ j i ) , ( k b ⋅ k i ) ] [(k_b\cdot i_i),(k_b\cdot j_i),(k_b\cdot k_i)] [(kbii),(kbji),(kbki)]为单位矢量 k b k_b kb 在坐标系 o x i y i z i ox_iy_iz_i oxiyizi 的方向余弦。

i b , j b , k b i_b,j_b,k_b ib,jb,kb分别在坐标系 o x i y i z i ox_iy_iz_i oxiyizi的方向余弦组成矩阵 M M M(注意,按列组成):
M = [ i b ⋅ i i j b ⋅ i i k b ⋅ i i i b ⋅ j i j b ⋅ j i k b ⋅ j i i b ⋅ k i j b ⋅ k i k b ⋅ k i ] ( 2 ) M=\begin{bmatrix} i_b\cdot i_i &j_b\cdot i_i &k_b\cdot i_i\\ i_b\cdot j_i &j_b\cdot j_i &k_b\cdot j_i\\ i_b\cdot k_i &j_b\cdot k_i &k_b\cdot k_i \end{bmatrix} \qquad(2) M=ibiiibjiibkijbiijbjijbkikbiikbjikbki(2)
则矩阵 M M M即为b系到i系的坐标变换矩阵(推导过程略)。

假设点P在b系中的坐标为 [ x b , y b , z b ] T \begin{bmatrix} x_b,y_b,z_b\end{bmatrix}^{T} [xb,yb,zb]T,在i系中的坐标为 [ x i , y i , z i ] T \begin{bmatrix} x_i,y_i,z_i\end{bmatrix}^{T} [xi,yi,zi]T,则两者通过坐标旋转矩阵 M M M联系:
[ x i y i z i ] = M ⋅ [ x b y b z b ] ( 3 ) \begin{bmatrix} x_i\\y_i \\z_i \end{bmatrix}= M\cdot\begin{bmatrix} x_b \\y_b \\z_b \end{bmatrix} \qquad(3) xiyizi=Mxbybzb(3)

方向余弦的应用

之前我们通过欧拉旋转或者四元素的方式得到两个坐标系之间的坐标变换矩阵 M M M,而现在我们多了一种方法得到 M M M

假设上式中, i i i系为原始坐标系, b b b系为相机坐标系,那么我只要知道了相机坐标系(b系)的三个坐标轴的基向量 i b , j b , k b i_b,j_b,k_b ib,jb,kb i i i系中的坐标(方向余弦,式1),就可以得到坐标变换矩阵 M M M(式2)。实际上只要知道两个基向量即可,剩下的用前两个基向量叉乘即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值