1. 位移(translation)

对于一个三维坐标(x, y, z),我们想让它往x轴正方向移动1个单位,往y轴正方向移动1个单位,往z轴正方向移动1个单位,则可以让它加上一个向量(1, 1, 1)

2. 旋转(Rotation)

对于一个三维坐标(x, y, z),让其绕x, y, z轴旋转θ角的方法是在其左边乘上一个旋转矩阵。绕x轴,绕y轴,绕z轴的旋转矩阵分别是:

PS:如果我们想更加通用一点,即点(x, y, z)绕轴(u, v, w)旋转θ的矩阵是什么?
如果u, v, w三者的平方和为1,即该向量是个单位向量,那么矩阵如下:

3. 缩放(scale)

对于一个三维坐标(x, y, z),我们想让它扩大2倍,则可以让它变成(2x, 2y, 2z)。写成矩阵乘法的话,V2 = M*V1,M如下图:

4. 统一变换

有没有什么方法让位移,旋转,缩放都成为统一的一种形式?
答:将三维坐标转换为四维坐标,然后使用线性变换。

线性变换(Linear Transformation / Xforms)是渲染和游戏引擎等图形学工具进行坐标变换的方式,是可逆的。
线性变换的等式如下:
V2 = M*V1

  • V是齐次(homogeneous)四维向量(x,y,z,w),竖着写的
  • M是齐次4×4矩阵
  • 当w=1时,四维坐标会变成三维坐标

对于三维坐标(x, y, z),将其转换为四维坐标,可以直接加个1,即变成(x, y, z, 1)
对于四维坐标(x, y, z, w),都除以w即可转换为三维坐标,即(x/w, y/w, z/w)

1. 四维位移

这个图要从右向左看

从上图中可以看到,四维位移矩阵,是在一个四维单位矩阵(就是对角线都是1,其他都是0的矩阵)的最后一列,放入你想要位移的向量(tx, ty, tz)

2. 四维旋转

绕x轴转θ

从上图中可以看到,四维旋转矩阵,是在我们上面刚说的三维绕轴旋转矩阵的基础上,在最后一行和最后一列补上一个(0,0,0,1)。

3. 四维缩放

从右向左看

和旋转一个道理。

5. 四维变换的性质

  1. 可关联(associative)
    你可以让一个坐标乘上一个旋转矩阵,再乘上一个位移矩阵,再乘上一个缩放矩阵,再乘上一个旋转矩阵………………

  2. 旋转和缩放矩阵可交换(communicative)
    先旋转后缩放和先缩放后旋转的结果是一样的。RS = SR
    位移不满足交换律
    先位移再旋转和先旋转再位移结果是不一样的!因为旋转之后模型的正面朝向就变了,所以会向新的方向位移。
    TS!=ST, TR!=RT

  3. 对于任何一个线性变换矩阵,我们可以把它拆解(decompose)为TRS或TSR三个矩阵的乘积的形式。

    1)首先提取最后一列,得到位移
    2)剩余的矩阵是R和S相乘的矩阵
    我们可以先看一下S和R相乘的结果是什么样的

    SR相乘, 以Z轴旋转为例

    从图中可以看出,SR矩阵,第一行的平方和开根就是Sx,第二行的平方和开根就是Sy,第三行的平方和开根就是Sz。第一行除以Sx,第二行除以Sy,第三行除以Sz,即可得到旋转矩阵。

6. 四维变换的逆变换

由于线性变换是可逆的,所以我们可以看一下位移旋转缩放的逆矩阵。
1. 位移
T的逆矩阵是-T,即向反方向移动。
2. 旋转
R的逆矩阵是R的转置矩阵,即以对角线翻转矩阵。
怎么理解呢?比如R是绕X轴旋转θ,那么逆操作就是绕X轴旋转,带入-θ就会发现它变成了转置矩阵。
3. 缩放
S的逆矩阵是1/S,即把对角线上的三个元素都变成倒数,即反向缩放。
4. 线性变换Xforms
TSR的逆矩阵 = R的逆×S的逆×T的逆

以上转载自:https://www.jianshu.com/p/ac1b34420be7

变换矩阵_平移 缩放 旋转及统一变换相关推荐

  1. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

  2. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. OpenCV_04 几何变换:图像缩放+图像平移+图像旋转+仿射变换+透射变换+图像金字塔

    1 图像缩放 缩放是对图像的大小进行调整,即使图像放大或缩小. API cv2.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR) 参 ...

  4. 图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)

    1.平移: import cv2 import tensorflow as tf import numpy as np from PIL import Image from skimage impor ...

  5. opengl矩阵变换与平移缩放旋转

    2019独角兽企业重金招聘Python工程师标准>>> 坐标系: 1.右手坐标系 2.左手坐标系 左手坐标系是X轴向右,Y轴向上,Z轴向前,右手坐标系的Z轴正好相反,是指向" ...

  6. 线性代数:矩阵变换图形(三维平移缩放旋转)

    紧接上一篇:http://blog.csdn.net/yinhun2012/article/details/79544205 这篇博文我只是准备对上一篇博文的内容进行扩展,因为上一篇我写完二维xy仿射 ...

  7. C语言数字图像处理---1.5图像基本变换之平移缩放旋转

    本篇作为新年到来前的最后一篇,提前祝大家新年快乐! 图像几何变换又叫做图像基本变换,主要包括图像平移.图像缩放和图像旋转几个部分,当然还有图像镜像等简单的内容.图像基本变换是图像处理的基本内容,是学习 ...

  8. iOS图片添加平移/缩放/旋转多个手势

    // // UIImageView+Utils.h // OpenWorkr // // Created by 冰凉的枷锁 on 2017/3/6. // Copyright © 2017年 Eden ...

  9. C++-矩阵运算-Eigen-几何矩阵变换-常见几何参数求解-平移-缩放-旋转-仿射变换-垂足-面积-周长-方向角-按目标点和距离移动当前点

    文章目录 1.矩阵运算规律 1.1.矩阵相乘结合律 1.2.矩阵相乘交换律 1.3.矩阵转置 1.4.矩阵的逆 2.仿射变换 2.1.平移变换 Translation 2.2.缩放变换 Scale 2 ...

最新文章

  1. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解
  2. 滚动条的值如何赋值_如何给Word文本框添加滚动条?史上最详细步骤
  3. http https http2.0
  4. C语言求一个数的平方根倒数的近似值-一战封神的代码
  5. OCS UCCA 开发笔记(Unified Communications Client API)
  6. smale学习之数学表达式(day5)
  7. hibernate 多表查询
  8. G.703接口和E1接口区别
  9. 关于数据采集的配置方法
  10. 2.1用户界面设计的八项黄金法则
  11. 复合辛普森公式求解定积分 matlab
  12. 用iframe的方式 解决 window.open() 不能打开多个窗口的问题
  13. mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
  14. 无法加载文件 XXX,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft问题解决
  15. devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)...
  16. 最近在做的用户留存分析,和几种方法。
  17. javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
  18. Sklearn机器学习——ROC曲线、ROC曲线的绘制和AUC面积、运用ROC曲线找到最佳阈值
  19. Java UDP 入门实例
  20. 从DDD到PaaS化再到一站式部署——通天塔后端通用版发展之路

热门文章

  1. HEIF 和 HEVC 研究
  2. 智慧车行预约小程序,汽车保养、维修、美容、检测预测小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约
  3. 用PHP进行Web编程
  4. Android9.0默认将开发者选项中的OEM锁开关打开
  5. C/C++编程笔记:C++中的isspace()及其在计算空格字符中的应用
  6. Android 隐私数据_Android安全警告:10亿台安卓设备不再支持安全更新
  7. Tomcat优化总结
  8. 解决:ADODB.Stream 错误 '800a0bbc' 写入文件失败
  9. npm ERR! code E404 npm ERR! 404 no such package available : xxx
  10. 2022社区团购回暖,创新 O2O 生鲜电商新零售解决方案