绕Y轴旋转矩阵和绕任意轴旋转的解释

绕Y轴旋转矩阵

rotateY(\Theta ) = \begin{bmatrix} cos\Theta & 0 & sin\Theta \\ 0 & 1 & 0\\ -sin\Theta & 0 & cos\Theta \end{bmatrix}

这里看到-sinθ在左下角,和z,x轴的旋转不一样(他们在左上角),我们来看看为什么。

看看各个轴的关系:x=cross(y,z),z=cross(x,y),y=cross(z,x)。

以下以左手坐标系为例子(右手坐标是一样的):

zb = r cos(α + φ) = r cos α cos φ - r sin α sin φ,   
xb = r sin(α + φ) = r sin α cos φ + r cos α sin φ.

因为 za = r cos α

        xa = r sin α
代入上式得:

xb = xa cos φ + za sin φ.

zb = za cos φ - xa sin φ = - xa sin φ + za cos φ

所以得到了rotateY的矩阵。

绕任意轴旋转

我们定义三个相互正交的向量uvw组成的正交矩阵是M_{uvw},该矩阵乘以任意uvw空间中的向量得到的是xyz空间下的向量。

M_{uvw} = \begin{bmatrix} u & v & w \end{bmatrix} = \begin{bmatrix} x_u & x_v & x_w\\ y_u & y_v & y_w\\ z_u & z_v & z_w \end{bmatrix}

例如:

M_{uvw}x = u

那么该矩阵的逆矩阵(正交矩阵的逆矩阵等于转置矩阵),乘以xyz坐标系的向量得到uvw空间下的向量

M_{uvw}^Tu = x

那么如果我们绕一个向量w旋转φ角度,相当于把输入向量转到uvw空间下的w向量,然后构建绕z轴旋转φ的矩阵,再转回xyz空间下:

M_{uvw}R_zM_{uvw}^T = \begin{bmatrix} x_u & x_v & x_w\\ y_u & y_v & y_w\\ z_u & z_v & z_w \end{bmatrix}\begin{bmatrix} \cos\phi & -\sin\phi & 0\\ \sin\phi & \cos\phi & 0\\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x_u & y_u & z_u\\ x_v & y_v & z_v\\ x_w & y_w & z_w \end{bmatrix}

当w向量确定后,可以利用up(0, 1, 0)向量确定uv两个向量。

u = cross(up, w),v = cross(w, u)

 

 

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值