当前位置: 首页 > news >正文

三维空间坐标系变换(旋转平移)

在探究三维空间下的变换前,首先研究二位空间,因为比较直观,再推广到三维空间。
首先应该清楚的一点是:旋转平移对于坐标系下的以及坐标系本身而言都是相对的(运动的相对性)。

例如:

  1. X O Y XOY XOY坐标系不动,点 P ( x , y ) P(x, y) P(x,y)沿顺时针方向旋转 θ \theta θ,得到点 P ′ P' P,此时点 P ′ P' P X O Y XOY XOY坐标系的坐标为 ( x ′ , y ′ ) (x', y') (x,y)
  2. P ( x , y ) P(x, y) P(x,y)不动,坐标轴 X O Y XOY XOY沿着逆时针方向旋转 θ \theta θ,得到坐标轴 X ′ O Y ′ X'OY' XOY,此时点 P P P X ′ O Y ′ X'OY' XOY下的坐标为 ( x ′ , y ′ ) (x', y') (x,y)
    这两条命题是等价的。

因此,仅讨论坐标系变换

二维空间下的坐标系变换

平移:

旋转:

注:图片来源https://www.cnblogs.com/meteoric_cry/p/7987548.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以对于二维旋转来讲,旋转可描述为:设点 P P P X O Y XOY XOY坐标系下坐标为 [ x y ] \begin{bmatrix} x \\ y \end{bmatrix} [xy],将坐标系 X O Y XOY XOY顺时针旋转 θ \theta θ后, P P P点坐标为 [ x ′ y ′ ] \begin{bmatrix} x' \\ y' \end{bmatrix} [xy],则有:
[ x ′ y ′ ] = [ c o s θ − s i n θ s i n θ c o s θ ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} =\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [xy]=[cosθsinθsinθcosθ][xy]
旋转矩阵可记为: Q = [ c o s θ − s i n θ s i n θ c o s θ ] Q = \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} Q=[cosθsinθsinθcosθ]

三维空间下的坐标系变换

平移:

旋转:

三维空间下,当固定轴选定后,旋转就等价于:其余两轴在其平面内的(二维)旋转。
假设以逆着固定轴正向的方向看去的顺时针为旋转的正向

  1. x x x轴旋转 α \alpha α(在 y z yz yz平面顺时针旋转):
    在这里插入图片描述
    则旋转前后的坐标变化可描述为:
    [ x ′ y ′ x ′ 1 ] = [ 1 0 0 0 0 c o s α − s i n α 0 0 s i n α c o s α 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos\alpha & -sin\alpha & 0 \\ 0 & sin\alpha & cos\alpha & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} xyx1 = 10000cosαsinα00sinαcosα00001 xyx1

  2. y y y轴旋转 β \beta β(在 x z xz xz平面顺时针旋转):
    在这里插入图片描述
    则旋转前后的坐标变化可描述为:
    [ x ′ y ′ x ′ 1 ] = [ c o s β 0 s i n β 0 0 1 0 0 − s i n β 0 c o s β 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} cos\beta & 0 & sin\beta & 0 \\ 0 & 1 & 0 & 0 \\ -sin\beta & 0 & cos\beta & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} xyx1 = cosβ0sinβ00100sinβ0cosβ00001 xyx1

  3. z z z轴旋转 γ \gamma γ(在 x y xy xy平面顺时针旋转):
    在这里插入图片描述
    则旋转前后的坐标变化可描述为:
    [ x ′ y ′ x ′ 1 ] = [ c o s γ − s i n γ 0 0 s i n γ c o s γ 0 0 0 0 1 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} cos\gamma & -sin\gamma & 0 & 0 \\ sin\gamma & cos\gamma & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} xyx1 = cosγsinγ00sinγcosγ0000100001 xyx1

综上,当坐标系沿着 X , Y , Z X,Y,Z X,Y,Z轴分别旋转 α , β , γ \alpha,\beta,\gamma α,β,γ后,旋转矩阵为3个沿单一坐标轴旋转的旋转矩阵的乘积,前后的坐标变化可描述为:

Reference:

  1. 旋转矩阵(Rotation Matrix)的推导及其应用
  2. Wolfram MathWorld: Rotation Matrix
  3. 3d变换基础:平移、旋转、缩放(仿射变换)详解——公式推导
http://www.lryc.cn/news/351034.html

相关文章:

  • OC笔记之foundation框架
  • Docker部署springboot包并联通MySQL
  • 多帧激光点云基于标定参数进行融合拼接
  • python数据类型之字符串
  • Vue3实战笔记(38)—粒子特效终章
  • 晶体振荡器
  • 单词可交互的弧形文本
  • Linux——进程信号(一)
  • centos9 stream在线安装NVIDIA驱动(rockylinux9.4也成功安装nvidia驱动)
  • springmvc不同格式的参数解析
  • Unity3D让BoxCollider根据子物体生成自适应大小
  • WSL 2 installation is incomplete.
  • Servlet的request对象
  • 蓝桥杯-合并数列
  • 《web应用技术》第9次课后作业
  • FRAUDARCatchSync算法简介
  • 刷题之将有序数组转换成二叉搜索树(leetcode)
  • K-means聚类模型教程(个人总结版)
  • android怎么告诉系统不要回收
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit(2)
  • ubuntu设置root开机登录,允许root用户ssh远程登录
  • Web测试面试题(二)
  • VBA宏指令写的方法突然不能用了
  • 第13章 Python建模库介绍
  • IP学习——ospf1
  • 别说废话!说话说到点上,项目高效沟通的底层逻辑揭秘
  • 前后端编程语言和运行环境的理解
  • 一顿五元钱的午餐
  • 【前端每日基础】day60——TDK三大标签及SEO引擎优化
  • vscode添加代办相关插件,提高开发效率