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

图形学中的变换

图形学中的变换

二维变换

缩放变换(Scale

img

如上图,如果想把一个图形缩小为原来的0.5倍,那么就需要x坐标变为0.5倍,y坐标也变为0.5倍,可以用以下表达式表示

在这里插入图片描述

这两个表达式可以用矩阵的形式表示如下

在这里插入图片描述

Sx表示在x轴方向上缩放的倍数,Sy表示在y轴方向上缩放的倍数

反射变换(Reflection)

在这里插入图片描述
如上图需要将物体以y轴进行镜像,那么可以用以下表达式表达
在这里插入图片描述
也可以用矩阵形式的表达
在这里插入图片描述
一些其他镜像矩阵
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

切变变换(Shear)

在这里插入图片描述
如上图这个变换好像是拽着图形的右上角沿着x轴向右拉了一段距离,称为剪切变换。
剪切变换有以下特点

  • 变换后物体的y坐标保持不变
  • x坐标在最高的点平移了a,最低点没有移动
  • 其它的点移动距离a * Y (Y表示物体上点的y坐标值)

用矩阵形式的表达为
在这里插入图片描述

旋转变换

说旋转,默认指的是 绕原点(0,0)逆时针旋转,下图是物体绕原点逆时针旋转θ角的示意图
在这里插入图片描述
当一个点 (𝑥, 𝑦 ) 绕着原单 (0, 0) 旋转 𝜃 角时,变换矩阵可以表示为:
在这里插入图片描述

推导过程:

在这里插入图片描述

旋转矩阵的是正交矩阵,旋转矩阵的逆等于其转置。\(R_-\theta = R_\theta^T\)

平移变换(仿射变换)

在这里插入图片描述

如上图需要把一个图形沿x轴平移tx,沿y轴平移ty,可以用以下表达式表示

在这里插入图片描述

无法用前面熟悉的线性变换矩阵的形式表示,也就是说平移变换是非线性变换,只能用以下矩阵形式表示,上面把这种变换称为非线性变换,也叫仿射变换

在这里插入图片描述

为了统一,引入齐次坐标

齐次坐标

点和向量转换为齐次坐标:
image-20240223163732498
向量具有平移不变性,因此向量的齐次方程在后面加0,可以保护向量在平移时不被改变。

最后一位还可以满足向量与点之间的运算:
image-20240223164405988
齐次坐标中的点加点定义为两个点的中点

普通坐标转化为齐次坐标:
image-20240223164801448
image-20240223164733805
由此可看出齐次坐标表示时是先线性变换再平移

逆变换

image-20240223165216038
一个物体做一个变换,变换完以后要恢复到原来的位置,变换回原来的位置的过程称为逆变换,逆变换在数学上的实现是乘以变换矩阵的逆矩阵

组合变换

先平移后旋转:
image-20240223165917028

先旋转后平移:
image-20240223170007711

由此可知:

  • 复杂的变换可以由一系列简单的变换得到。
  • 变换的循序很重要,因为组合变换由矩阵相乘得到,而矩阵的乘法不满足交换律
    image-20240223170240833

矩阵相乘的顺序:
在这里插入图片描述
矩阵没有交换律,因此不能改变乘的顺序,但有结合律,因此可以先将矩阵相乘得到一个矩阵,再将这个矩阵与向量相乘。
在这里插入图片描述

分解变换

非原点的旋转变换:
在这里插入图片描述
可将整个变换分解为先进行平移变换T(-c),再进行旋转变换R(\(\alpha\)),最后再平移回去T(c)。
在这里插入图片描述

刚体变换

只有平移和旋转组成的变换称为刚体变换,例如一个物体先旋转45度在x轴方向上平移一个单位,这样的变换称为刚体变换,刚体变换的本质是一个物体的位置和角度发生了变换,物体本身的形状并不发生任何变化
在这里插入图片描述

上面的变换是先进行线性变换-旋转,在进行仿射变换-平移,这时可以把两个变换的矩阵合并为一个矩阵,两种变换合并为一个矩阵用来表示刚体变换,这个矩阵称为刚体变换矩阵
在这里插入图片描述

刚体变换的逆变换
二维刚体变换的逆变换矩阵,只需要把原变换矩阵左上角2×2矩阵(上图蓝色框部分)转置,右侧最后一列(上图红色框部分)的平移分量符号取反。就可以得到刚体变换的逆变换矩阵

三维变换

三维空间的向量和点:
image-20240223173632505

旋转变换

绕x轴旋转:
image-20240224115712730

绕y轴旋转:
image-20240225102003382

绕z轴旋转:
image-20240225101933023

复杂旋转的公式:用简单旋转公式描述复杂旋转

罗德里格斯旋转公式

http://www.hskmm.com/?act=detail&tid=30440

相关文章:

  • Unity URP 体积云
  • 使用DirectX绘制天空盒并实现破坏和放置方块
  • 编写DX12遇到的坑
  • 编写DX12时使用的辅助类
  • HLSL语法
  • DirectX12初始化
  • 实验2
  • CF2159B
  • 登录校验---Filter过滤器
  • 日志|Ajax
  • 环境变量 Path 配置实战指南:从“能用”到“专业”--两种配置环境变量的方法
  • 10月13日
  • Ubuntu22.04安装CH340/CH341驱动
  • 玄机蓝队靶场_应急响应_198:实战Live勒索病毒溯源排查
  • JetBrains Mono字体好看、及其它
  • STM32——UART
  • WebApi 交叉观察者- IntersectionObserver复盘
  • [KaibaMath]1009 关于||a|-|b||≤|a+b|的证明
  • AMPopTip - 优雅的iOS动画提示框库
  • 2026年深度对比值得推荐的10个在线客服系统
  • 文件名中有空格比较烦人
  • 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 十月总结
  • 20251013 之所思 - 人生如梦
  • Markdown 基本语法
  • 简单工单系统的实现-客服系统中增加创建工单功能
  • 日总结 10
  • # 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 20232317 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • 给一个字符串数组,输出不同的部分