0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三维空间直角坐标系的平移和旋转变换

FPGA算法工程师 来源:小D的线上笔记 2023-12-18 09:48 次阅读

这次的文章,我们来看一看三维空间直角坐标系的平移和旋转变换,尽管这个内容早已见诸文献资料,但自己在看书籍以及期刊论文时,总是遇到让人百思不得其解的事情,就是不同的文献给出的同类型的旋转矩阵居然有不一样的,这让小D对文献中的公式产生了怀疑,也不知道哪个旋转矩阵才是对的。

于是,自己动手,丰衣足食,为了验证公式的正确性,小D把旋转矩阵推了个遍,包括文献中只给出了公式而没有过程的旋转矩阵的推导。

三维空间直角坐标系的平移变换

文章的开头,还是先讲讲坐标系的平移变换,平移变换的过程如下图所示:

098cde7c-9cd2-11ee-8b88-92fbcf53809c.png

假设点P是空间中的任意一点,其在XYZ坐标系中的坐标为(x, y, z)。现在点P不动,我们将XYZ坐标系做一个平移的操作,把XYZ平移到X´Y´Z´的位置,O´是平移后的坐标的原点,要注意的是,O´在XYZ中的坐标为(x0, y0, z0)。点P在XYZ坐标系中的坐标为(x, y, z),点P在平移后的坐标系X´Y´Z´中的坐标为(x´, y´, z´)。根据上面这个示意图,聪明的你一下就可以发现:

09a2d920-9cd2-11ee-8b88-92fbcf53809c.png

通过上面的式子,我们可以求解出点P在X´Y´Z´坐标系中的坐标为:

09ab99b6-9cd2-11ee-8b88-92fbcf53809c.png

把上面的式子转换成矩阵的形式就是:

09b5627a-9cd2-11ee-8b88-92fbcf53809c.png

这就是三维空间直角坐标系的平移变换了。

三维空间直角坐标系的旋转变换

下面我们来看看三维空间直角坐标系的旋转变换,小D最开始在研究旋转变换的时候,只推导了右手坐标系的旋转变换。有一次看到了一篇文献,它用的是左手坐标系,但小D对文献中给出的公式的正确性感到怀疑,而我们要在代码中用到相关的坐标转换,这意味着我们需要知道左手坐标系旋转矩阵的正确表达式,所以小D又把左手坐标系的旋转矩阵推导了一遍。

右手坐标系的旋转变换

右手坐标系的旋转过程有三个,分别是绕X,Y,Z轴旋转,右手坐标系在旋转时,通常规定以逆时针旋转方向为正方向。

①XYZ右手坐标系绕X轴逆时针旋转θ角

先来推导右手坐标系绕X轴旋转的旋转矩阵,这个过程可以用下面这个示意图表示:

09becedc-9cd2-11ee-8b88-92fbcf53809c.png

假设P点为空间中任意一点,为了便于观察与推导,我们将P点放在YOZ平面内。P点在空间中保持不动,XYZ坐标系绕X轴逆时针旋转θ形成新的坐标系X´Y´Z´,P点在XYZ中的坐标为(x, y, z),P点在X´Y´Z´中的坐标为(x´, y´, z´),现在我们已知(x, y, z)、旋转角度θ和(x´, y´, z´),求旋转矩阵Rx。在推导的过程中,我们还要假设一个变量,就是点P相对于Y轴正方向逆时针的夹角为φ。

很明显,点P在XYZ坐标系中的Y,Z轴坐标可以表示为:

09d27806-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中Y´,Z´轴坐标为:

09de1e7c-9cd2-11ee-8b88-92fbcf53809c.png

把x,y带入x´,y´中,同时P点在XYZ中X轴坐标与其在X´Y´Z´坐标系中的X´轴坐标是相等的,所以有:

09ef6ce0-9cd2-11ee-8b88-92fbcf53809c.png

把这个表达式表示成矩阵相乘的形式为:

09f960c4-9cd2-11ee-8b88-92fbcf53809c.png

上面的Rx就是XYZ右手坐标系绕X轴逆时针旋转θ角,空间中的点从XYZ坐标系变换到X´Y´Z´坐标系的旋转矩阵,Rx的表达式为:

0a079586-9cd2-11ee-8b88-92fbcf53809c.png

②XYZ右手坐标系绕Y轴逆时针旋转θ角

有了前面的推导过程,XYZ右手坐标系绕Y轴逆时针旋转θ角的旋转矩阵的推导就一葫芦画瓢了。旋转过程如下图所示:

0a108af6-9cd2-11ee-8b88-92fbcf53809c.png

点P在XYZ右手坐标系中的X,Z轴坐标为:

0a1fbb84-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中的X,Z轴坐标为:

0a2853ca-9cd2-11ee-8b88-92fbcf53809c.png

把x,z带入x´,z´中,同时P点在XYZ中的Y轴坐标与X´Y´Z´坐标系中的Y´轴坐标是相等的,所以有:

0a35eab2-9cd2-11ee-8b88-92fbcf53809c.png

写成矩阵相乘的形式:

0a41096a-9cd2-11ee-8b88-92fbcf53809c.png

所以,XYZ右手坐标系绕Y轴逆时针旋转θ角的旋转矩阵Ry为:

0a52eb8a-9cd2-11ee-8b88-92fbcf53809c.png

XYZ右手坐标系绕Z轴逆时针旋转θ角

XYZ右手坐标系绕Z轴逆时针旋转θ的过程如下图所示:

0a5d7212-9cd2-11ee-8b88-92fbcf53809c.png

点P在XYZ右手坐标系中的X,Y轴坐标为:

0a74d2b8-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中的x,y坐标为:

0a7de056-9cd2-11ee-8b88-92fbcf53809c.png

把x,y带入x´,y´中,同时P点在XYZ中的Z轴坐标与其在X´Y´Z´坐标系中的Z´轴坐标是相等的,所以有:

0a86b924-9cd2-11ee-8b88-92fbcf53809c.png

写成矩阵相乘的形式:

0a8f4602-9cd2-11ee-8b88-92fbcf53809c.png

所以,XYZ右手坐标系绕Z轴逆时针旋转θ角的旋转矩阵Rz为:

0a9cd100-9cd2-11ee-8b88-92fbcf53809c.png

左手坐标系的旋转变换

左手坐标系的旋转过程也是三个,分别是绕X,Y,Z轴旋转,左手坐标系在旋转时,通常规定以顺时针旋转方向为正方向。

①XYZ左手坐标系绕X轴顺时针旋转θ角

XYZ左手坐标系绕X轴顺时针旋转θ角的过程示意图如下所示:

0aaec36a-9cd2-11ee-8b88-92fbcf53809c.png

上图中,点P为空间中任意一点,点P保持不动,XYZ左手坐标系绕X轴顺时针旋转θ角形成新的坐标系X´Y´Z´。已知点P在XYZ坐标系中的坐标为(x,y,z),点P在X´Y´Z´中的坐标为(x´,y´,z´),我们要求的是XYZ坐标系变换到X´Y´Z´坐标系这个过程中的旋转矩阵。

从图中可以看出,点P在XYZ坐标系中的Y,Z轴坐标为:

0abd079a-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中的Y,Z轴坐标为:

0ac797be-9cd2-11ee-8b88-92fbcf53809c.png

把y,z带入y´,z´中,同时P点在XYZ中的X轴坐标与其在X´Y´Z´中的X´轴坐标是相等的,所以有:

0acfecc0-9cd2-11ee-8b88-92fbcf53809c.png

写成矩阵相乘的形式:

0adb333c-9cd2-11ee-8b88-92fbcf53809c.png

所以,XYZ左手坐标系绕X轴顺时针旋转θ角的旋转矩阵为:

0ae67c2e-9cd2-11ee-8b88-92fbcf53809c.png

XYZ左手坐标系绕Y轴顺时针旋转θ角

XYZ左手坐标系绕Y轴顺时针旋转θ角形成X´Y´Z´坐标系,其过程示意图如下所示:

0af2bdc2-9cd2-11ee-8b88-92fbcf53809c.png

点P在XYZ坐标系中的X,Z轴坐标为:

0b052a3e-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中的X,Z轴坐标为:

0b0ef23a-9cd2-11ee-8b88-92fbcf53809c.png

把x,z带入x´,z´中,同时P点在XYZ中的Y轴坐标与其在X´Y´Z´坐标系中的Y´轴坐标是相等的,所以有:

0b18bb3a-9cd2-11ee-8b88-92fbcf53809c.png

以矩阵形式表示为:

0b22573a-9cd2-11ee-8b88-92fbcf53809c.png

所以,XYZ左手坐标系绕Y轴顺时针旋转θ角的旋转矩阵Ry为:

0b29eac2-9cd2-11ee-8b88-92fbcf53809c.png

③XYZ左手坐标系绕Z轴顺时针旋转θ角

XYZ左手坐标系绕Z轴顺时针旋转θ角形成X´Y´Z´坐标系的过程示意图如下所示:

0b3a33d2-9cd2-11ee-8b88-92fbcf53809c.png

点P在XYZ坐标系中的X,Y轴坐标为:

0b4923ce-9cd2-11ee-8b88-92fbcf53809c.png

点P在X´Y´Z´坐标系中的X,Y轴坐标为:

0b54254e-9cd2-11ee-8b88-92fbcf53809c.png

把x,y带入x´,y´中,同时P点在XYZ中的Z轴坐标与其在X´Y´Z´坐标系中的Z´轴坐标是相等的,所以有:

0b63c6ca-9cd2-11ee-8b88-92fbcf53809c.png

将上式表示成矩阵的形式为:

0b6dc0c6-9cd2-11ee-8b88-92fbcf53809c.png

所以,XYZ左手坐标系绕Z轴顺时针旋转θ角的旋转矩阵Rz为:

0b7a5f5c-9cd2-11ee-8b88-92fbcf53809c.png

左手坐标系的旋转矩阵到这里就推导完啦。

旋转矩阵的运用

实际中,当我们要推导两个不同的坐标系,比如地心地固坐标系和北东天、北东天坐标系和机体坐标系等坐标系之间的变换关系时,就要用到上面的旋转矩阵。一般的方法是,根据实际的旋转过程,按旋转的先后顺序计算旋转矩阵。

比如对于右手坐标系,如果有一个过程是先绕Y轴逆时针旋转α,再绕X轴顺时针旋转β,最后绕Z轴逆时针旋转γ,那么最终的旋转矩阵的表达就是:

0b863f0c-9cd2-11ee-8b88-92fbcf53809c.png

在应用旋转矩阵的过程中,小D还总结了一个经验:不管是左手坐标系还是右手坐标系,假如绕X轴逆时针旋转θ角,相当于绕X轴顺时针旋转2π-θ角,同时也相当于绕X轴顺时针旋转-θ角。

旋转矩阵的验证

推导了这么多公式,那推导结果是否正确呢?我们可以从《雷达数据处理及应用》中找到相关内容:

0b94e12e-9cd2-11ee-8b88-92fbcf53809c.png

0ba888e6-9cd2-11ee-8b88-92fbcf53809c.png

0bba5256-9cd2-11ee-8b88-92fbcf53809c.png

从书中的截图中可以验证,自己推导的平移变换以及右手坐标系的旋转矩阵是没有问题的。但是左手坐标系的推导,小D至今没有找到相关文献,但小D相信肯定是有的。

然后小D向gpt求证,gpt给出的答案是这样的:

0bcb4a70-9cd2-11ee-8b88-92fbcf53809c.png

很显然,gpt给出的右手坐标系的旋转矩阵不是小D上面推导的结果,也跟书中的结果不一样。于是小D又去问了gpt4,gpt4的回答是这样的:

0bdecd52-9cd2-11ee-8b88-92fbcf53809c.png

gpt4的回答和gpt3.5的回答如出一辙,当时小D心想,gpt脑子估计又瓦特了。直到最近,小D看到了一本英文书籍Geometric Transformations for 3D Modeling_Michael Mortenson,小D才明白,原来gpt是没有正确理解问题,它给出的是坐标系中的点转动,坐标轴不动的情况。这本英文书籍中坐标转换相关的内容是这样的:

0bf1ea4a-9cd2-11ee-8b88-92fbcf53809c.png

0c03d926-9cd2-11ee-8b88-92fbcf53809c.png

0c1490ea-9cd2-11ee-8b88-92fbcf53809c.png

0c2af312-9cd2-11ee-8b88-92fbcf53809c.png

0c4015bc-9cd2-11ee-8b88-92fbcf53809c.png

这个时候,小D才明白为什么gpt会给出那样的答案,因为旋转分为两种:

①点不动,坐标轴旋转,就是小D推导的公式

②坐标轴不动,点旋转,就是gpt第一次回答的公式

以另一种方式问它,它就回答对了“点不动,坐标轴旋转”的旋转矩阵正确的公式:

0c4e6c20-9cd2-11ee-8b88-92fbcf53809c.png

0c62e290-9cd2-11ee-8b88-92fbcf53809c.png

到这里,就验证了小D推导的坐标转换的所有公式啦。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 坐标系
    +关注

    关注

    0

    文章

    29

    浏览量

    7265
  • 三维空间
    +关注

    关注

    0

    文章

    17

    浏览量

    7463

原文标题:坐标系的平移、旋转变换——超详细

文章出处:【微信号:FPGA算法工程师,微信公众号:FPGA算法工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    讲座2 信号变换基础 -- 线性空间及正交变换的基本理论

    的线性空间变换问题。人们知道,三维空间中的向量一般要用它在正交坐标系个分量来描述。但是,如果适当地
    发表于 04-19 21:37

    转:绕任意空间旋转三维图形

    在计算图形学中,会经常涉及两种变化:一是:三维几何变换。就是在同一个坐标系中,对图形进行旋转,缩放,平移等,其中任意轴
    发表于 07-27 11:14

    如何使用labview根据XYZ坐标实时绘制三维曲线

    如何使用labview根据实时获得的物体XYZ坐标,实时绘制三维曲线,也就是物体运动轨迹,就是像chart显示控件那样能实时逐点连线,但是要在三维直角坐标系中画出。各人认为单纯依靠la
    发表于 04-12 23:08

    在新式-图形-三维图形-曲面中应用圆柱坐标系

    选择圆柱坐标系后,圆柱坐标系中的ρ、ψ、Z与直角坐标系中的X、Y、Z是如何对应的?
    发表于 03-02 21:38

    电机控制系统中直角坐标系与极坐标系的优势比较,请问TI是否有现成的demo例程?

    本帖最后由 一只耳朵怪 于 2018-6-11 17:02 编辑 请问电机控制系统中直角坐标系与极坐标系的优势比较。TI是否有现成的demo例程。
    发表于 06-11 02:58

    CAD制图软件新手攻略:坐标系及标注坐标

    坐标系。下面就来给大家详细介绍一下浩辰CAD制图软件中坐标系及标注坐标的方法吧!首先一起来复习一下关于数学中的坐标系概念。1、笛卡尔坐标系
    发表于 09-23 10:28

    多电平逆变器三维空间矢量调制

    提出了三维空间矢量调制算法,直接将相参考电压映射到三维空间坐标系,所得基本矢量与开关状态矢量一一对应,不存在冗余现象。该调制算法首先确定参考矢量所在单位正方体的位置,然后在这个单位正
    发表于 03-20 14:32 0次下载
    多电平逆变器<b class='flag-5'>三维空间</b>矢量调制

    非正交三维坐标系下多电平空间矢量调制策略

    本文以桥臂中分电容结构的相四线制电平变流器(下文以电平中分电容变流器进行表述)为研究对象,提出了一种适用于多电平中分电容相四线制变
    发表于 04-24 17:16 5次下载
    非正交<b class='flag-5'>三维</b><b class='flag-5'>坐标系</b>下多电平<b class='flag-5'>空间</b>矢量调制策略

    机器人4大坐标系讲解

    任何机器人都离不开基坐标系,也是机器人TCP在三维空间运动空间所必须的基本坐标系(面对机器人前后:X轴 ,左右:Y轴, 上下:Z轴)。
    的头像 发表于 05-14 09:56 2.3w次阅读
    机器人4大<b class='flag-5'>坐标系</b>讲解

    如何使用FPGA实现abc坐标系三维空间矢量调制算法

    研究了一种应用于相四桥臂逆变器的基于abc坐标系的新的空间矢量调制算法,避免了传统的αβ0坐标变换,使开关矢量的选取和占空比的计算更简单,
    发表于 01-29 16:51 11次下载
    如何使用FPGA实现abc<b class='flag-5'>坐标系</b>的<b class='flag-5'>三维空间</b>矢量调制算法

    立体仓库三维空间路径优化方案的介绍

    为什么要进行立体仓库三维空间路径优化 在制造企业的智能仓储系统中,货物的转移作业是智能仓储系统中最常见作业方式,同时也是体现其效率的最关键点。选择最优化的仓位间的三维运行路径是提高智能仓储系统整体
    发表于 07-12 09:24 948次阅读

    介绍导航坐标系与载体坐标系之间的姿态旋转矩阵

    三维空间的任意旋转,都可以用绕三维空间的某个轴旋转过某个角度来表示(即轴角,Axis-Angle表示方法)。
    的头像 发表于 01-06 15:35 1866次阅读

    自动驾驶各个坐标系

    ENU局部坐标系采用三维直角坐标系来描述地球表面,实际应用较为困难,因此一般使用简化后的二投影坐标系来描 述。 UTM:在众多二
    发表于 06-01 15:59 0次下载
    自动驾驶各个<b class='flag-5'>坐标系</b>

    自动驾驶中的各种时空坐标系

    空间和时间的位置、 姿态表示出来。一般三维空间坐标系个正交轴X,Y,Z表示物体的位置,用绕这个正交轴的
    发表于 06-02 15:44 0次下载
    自动驾驶中的各种时空<b class='flag-5'>坐标系</b>

    焊接机器人坐标系有哪几种

      焊接机器人是一种自动化设备,用于进行焊接操作。为了确保焊接过程的准确性和效率,焊接机器人需要在三维空间中进行定位和控制。这涉及到使用不同的坐标系,以便机器人能够精确地执行任务。本文将重点讨论
    的头像 发表于 10-18 15:17 972次阅读
    焊接机器人<b class='flag-5'>坐标系</b>有哪几种