• 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

计算机图形学 – 三维空间中的左、右手坐标系旋转矩阵与旋转变换

3D数学基础 发布于2020-02-17 阅读 19,200次 0次评论 6次点赞 本文共2453个字,阅读需要7分钟。

三维空间中,绕着X轴,Y轴,Z轴的旋转可以使用4*4的矩阵表示,而根据左右手坐标系的不同,又可分为左手坐标系下的三维旋转矩阵和右手坐标系下的三维旋转矩阵。矩阵采用列主序。

1 左手坐标系下的旋转矩阵

左手坐标系下,正旋转是绕旋转轴顺时针旋转,可以理解为从旋转轴的正方向看向原点的顺时针方向。

设旋转角为θ角,

1.1 绕X轴顺时针旋转θ角的旋转矩阵

R_x(\theta)=\begin{bmatrix}1&0&0&0\\0&\cos\theta&-\sin\theta&0\\0&\sin\theta&\cos\theta&0\\0&0&0&1\end{bmatrix}

1.2 绕Y轴顺时针旋转θ角的旋转矩阵

R_y(\theta)=\begin{bmatrix}\cos\theta&0&\sin\theta&0\\0&1&0&0\\-\sin\theta&0&\cos\theta&0\\0&0&0&1\end{bmatrix}

1.3 绕Z轴顺时针旋转θ角的旋转矩阵

R_z(\theta)=\begin{bmatrix}\cos\theta&-\sin\theta&0&0\\\sin\theta&\cos\theta&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}

1.4 旋转矩阵组合

我们可以以上述三个绕轴旋转矩阵为基础,使用矩阵乘法组成不同旋转顺序的旋转矩阵,比如:

R_{x}(\gamma ) R_{y}(\beta ) R_{z}(\alpha )

其中\alpha\beta\gamma 分辨代表yaw、pitch、roll欧拉角。

  • pitch:抬头
  • yaw:向右偏
  • roll:向右翻滚

类似的,公式:

R_{z}(\gamma ) R_{x}(\beta ) R_{y}(\alpha )

代表欧拉角为\alpha\beta\gamma,变换顺序为y-x-z的旋转变换

另外,假设当前为顺时针的左手坐标系,绕x轴旋转\phi 角,绕y轴旋转\theta 角,绕z轴旋转\psi 角,且按x-y-z的顺序进行旋转,那么最后的旋转矩阵为:

R_{z}(\psi)R_{y}(\theta )R_{x}(\phi) = \\
\begin{bmatrix}
\cos \theta \cos \psi & -\cos \phi\sin \psi+\sin\phi\sin\theta\cos\psi & \sin \phi\sin\psi + \cos\phi\sin\theta\cos\psi \\
\cos\theta\sin \psi & \cos\phi\cos\psi+\sin\phi\sin \theta \sin \psi & -\sin\phi\cos\psi+\cos\phi\sin\theta\sin\psi \\
-\sin\theta & \sin\phi\cos\theta & \cos\phi\cos \theta
\end{bmatrix}

2 右手坐标系下的旋转矩阵

右手坐标系下,正旋转是绕旋转轴逆时针旋转,可以理解为从旋转轴的正方向看向原点的逆时针方向。

设旋转角为θ角,因为左右手坐标系的不同,导致在两个坐标系中旋转的正方向相反,白话文就是在左手坐标系中旋转了θ角,就相当于在右手坐标系中旋转了-θ角。
所以在第1节以在左手坐标系中顺时针旋转为正方向的情况下,顺时针旋转θ角为正方向,那么在右手坐标系中逆时针旋转θ角需要将第1节中左手坐标系的旋转矩阵中的角度改为-θ角。
那么将上述绕X,Y,Z轴的旋转中的θ角全部改为−θ角,则:

2.1 绕X轴顺时针旋转θ角的旋转矩阵

以第一节中绕x轴的旋转矩阵为基础,将θ修改为-θ,则:

R_x(\theta)=\begin{bmatrix}1&0&0&0\\0&\cos(-\theta)&-\sin(-\theta)&0\\0&\sin(-\theta)&\cos(-\theta)&0\\0&0&0&1\end{bmatrix}

则根据三角函数计算公式可推导出:

R_x(\theta)=\begin{bmatrix}1&0&0&0\\0&\cos\theta&\sin\theta&0\\0&-\sin\theta&\cos\theta&0\\0&0&0&1\end{bmatrix}

2.2 绕Y轴顺时针旋转θ角的旋转矩阵

以第一节中绕y轴的旋转矩阵为基础,将θ修改为-θ,则:

R_y(\theta)=\begin{bmatrix}\cos(-\theta)&0&\sin(-\theta)&0\\0&1&0&0\\-\sin(-\theta)&0&\cos(-\theta)&0\\0&0&0&1\end{bmatrix}

则根据三角函数计算公式可推导出:

R_y(\theta)=\begin{bmatrix}\cos\theta&0&-\sin\theta&0\\0&1&0&0\\\sin\theta&0&\cos\theta&0\\0&0&0&1\end{bmatrix}

2.3 绕Z轴顺时针旋转θ角的旋转矩阵

以第一节中绕z轴的旋转矩阵为基础,将θ修改为-θ,则:

R_z(\theta)=\begin{bmatrix}\cos(-\theta)&-\sin(-\theta)&0&0\\\sin(-\theta)&\cos(-\theta)&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}

则根据三角函数计算公式可推导出:

R_z(\theta)=\begin{bmatrix}\cos\theta&\sin\theta&0&0\\-\sin\theta&\cos\theta&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}

参考链接

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:计算机图形学 – 三维空间中的左、右手坐标系旋转矩阵与旋转变换

原文链接:https://www.stubbornhuang.com/714/

发布于:2020年02月17日 17:43:51

修改于:2023年06月26日 22:35:49

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
WordPress - 禁用XML-RPC接口,禁止访问xmlrpc.php,避免DDOS攻击,防止暴力破解
WordPress
下一篇
WordPress - 修改管理后台登录地址,防止恶意爆破
WordPress
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号