图形学学习笔记1:基础变换矩阵

这篇具有很好参考价值的文章主要介绍了图形学学习笔记1:基础变换矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

变换矩阵 (Transformation Marices) ,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到,在光栅化中会用到,同时在投影 (projection) 变换也有很多应用

将如下图所示的简单矩阵乘法定义为对向量的线性变换。

变换矩阵,图形渲染,笔记,学习

最简单的缩放变换,如图,即除了(0,0)不变之外都乘以某个系数

变换矩阵,图形渲染,笔记,学习

矩阵形式:

变换矩阵,图形渲染,笔记,学习

反射操作:(即关于y轴翻转)

变换矩阵,图形渲染,笔记,学习

切变(shearing):

把物体一边固定,然后拉另外一边,如图

变换矩阵,图形渲染,笔记,学习

分别对应"拉伸"x轴,和"拉伸"y轴

(变换通用方法:找对应点分析坐标的转换形式)

变换矩阵,图形渲染,笔记,学习

旋转Rotate(默认以原点为中心,逆时针旋转):重要的变换矩阵

变换矩阵,图形渲染,笔记,学习

同上,通过对应点坐标(1,0)(0,1)变换后关系可确定变换矩阵

变换矩阵,图形渲染,笔记,学习

补充:旋转角度-a和a其实是相反操作,因为旋转矩阵的逆矩阵等于他的转置 是正交矩阵

变换矩阵,图形渲染,笔记,学习

总结:

变换总能写成相同维度矩阵乘向量形式,如果能写成,就叫他线性变换

变换矩阵,图形渲染,笔记,学习

为什么强调相同维度?

变换矩阵,图形渲染,笔记,学习

如图,平移变换比较特殊,无法矩阵化,不是线性变换,只能写成以下形式:

变换矩阵,图形渲染,笔记,学习

为了不搞特殊,统一所有变换到一块用一种方法表示,引入齐次坐标:

(简单来说就是为了能用矩阵乘向量统一表示所有变换,多加一维)

变换矩阵,图形渲染,笔记,学习

注:最后一维为1,表示点(point), 为0表示方向(direction)

现在我们就可以用一个矩阵既表示线性变换(先),又表示位移(后)

为什么是10?为了保持向量的平移不变性,任何一个点都写成(x,y,1),任何一个向量都写成(x,y,0)

如下图所示,这种设置还有更多的考虑,齐次坐标系下:

向量加向量还是向量,点减去点是向量,点加向量得到一个新的点,点加上点是这两个点的中点,如图

变换矩阵,图形渲染,笔记,学习

引入齐次坐标后所有的仿射变换(一个向量空间进行一次线性变换并接上一个平移)都可以写成齐次坐标的形式:

变换矩阵,图形渲染,笔记,学习

同理,其他变换的齐次坐标系形式:

变换矩阵,图形渲染,笔记,学习

逆变换:M-1

变换矩阵,图形渲染,笔记,学习

变换回原来的形状,即逆变换,数学上就是乘以对应变换的逆矩阵

(这也是用矩阵乘法表示变换的优点之一,可以方便地描述逆变换)

复杂变换可以通过一系列简单变换得到,变换的顺序很重要(因为矩阵乘法没有交换律,先旋转后平移和先平移后旋转得到的结果不一样)

变换矩阵,图形渲染,笔记,学习

如图,注意是从右往左计算,如果应用太多矩阵可以写作以下形式(结合律的应用),即一个矩阵可以表示多次的复杂变换经过

变换矩阵,图形渲染,笔记,学习

同理变换不仅能合成也能分解(从右到左):围着任意轴旋转可以如图考虑

变换矩阵,图形渲染,笔记,学习

三维变换

变换矩阵,图形渲染,笔记,学习

如图,同理用二维做类比,向量(x,y,z,w)实质上是表示在空间中坐标为(x/w,y/w,z/w)的点

变换矩阵,图形渲染,笔记,学习

注意这样是先变换再平移

如图,类似二维,如果W不为0,则默认(x,y,z,w)表示的是三维空间中坐标为(x/w,y/w,z/w)的点

变换矩阵,图形渲染,笔记,学习

齐次坐标系下的三维变换:

变换矩阵,图形渲染,笔记,学习

平移和缩放:

变换矩阵,图形渲染,笔记,学习

旋转(较为复杂)关于某个坐标轴变换:(关于的轴对应坐标不用变化,“绕谁谁不变”,其余两个轴对应坐标参考二维旋转)

注意绕y时相反,因为此时根据右手螺旋定则是z叉乘x,而旋转矩阵的行列式对应关系是x向z转的,需要反一下

变换矩阵,图形渲染,笔记,学习

类似二维,任意旋转都是正交矩阵,因此他们的逆是他们的转置,如逆时针转30°,转置就是顺时针30°

以上都是绕单独坐标轴旋转,而任意一个3D旋转都可以写成分别绕XYZ轴旋转操作的组合:

变换矩阵,图形渲染,笔记,学习

其中αβγ角又被称为欧拉角 例:roll滚转(机身左右旋转) pitch俯仰(上下抬头) yaw偏航(平行的左右)

变换矩阵,图形渲染,笔记,学习

由此引出了罗德里格斯Rodrigues旋转公式:图形学中

α为旋转角  I为单位矩阵 n为环绕的某个轴的方向,即一个旋转向量(nx,ny,nz)(此时默认起点是过原点的轴)N为由n得到的一个反对称矩阵

R即为某个向量V以n方向为轴旋转α度后得到的向量Vrot要经过的旋转矩阵 即Vrot=RV,旋转前的向量坐标乘以R等于旋转后的向量坐标

变换矩阵,图形渲染,笔记,学习

如果要沿着任意轴,需要先将轴平移,以过原点的为轴再旋转,再整体平移回去

四元数:引入更多是为了计算旋转与旋转之间的差值,因为用矩阵表示旋转不方便计算,机器人学中用的比较多

四元数可以很方便地表示旋转变换。但在很多场合中,使用矩阵形式和向量形式表达旋转更有利于推导,因此这里不再赘述

另注:罗德里格斯公式推导的个人理解

变换矩阵,图形渲染,笔记,学习

该公式有多种推导方法,我观看的视频讲解如图,向量V绕k旋转θ角得到的向量Vrot

我们需要推导的就是这两个之间的关系,即经过的变换矩阵

那么首先由平行四边形法则可得,原向量V可以看作是分别在旋转轴k方向的分向量V∥和垂直于k轴的方向上的分向量V⊥之和

同理旋转后得到的向量Vrot也可以是V∥和垂直于k轴的方向上的分向量Vrot⊥之和,我们就从这点出发来找关系:

由向量点乘公式可得,用原向量V和单位向量k点乘来表示V在k方向上的投影长度,再乘以k的方向就可以表示V∥

由平行四边形法则可得,V⊥=V-V∥,又由叉乘的定义可得V⊥=-kx(kxv),即与v和k都垂直的单位向量c再叉乘-k得到与-k和c都垂直的向量V⊥

同理,Vrot⊥是通过正交分解求的,Vrot⊥在旋转的过程中长度不变(始终等于V⊥),因此V⊥的模乘以cosθ就是Vrot⊥在红色面上的投影长度,再把这个长度乘以V⊥方向的单位向量(b)就是Vrot⊥在红色面上的分量【同理也可以是(|b| = cos(PI -θ ) |V⊥| = (- cosθ)|V⊥|),再乘以V⊥相反方向】,同理相似的另外一个分量就乘以sinθ,两个分量相加就是Vrot⊥

之后经过代换简化就可得到罗德里格斯公式。文章来源地址https://www.toymoban.com/news/detail-838893.html

到了这里,关于图形学学习笔记1:基础变换矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA

    Edwards曲线数字签名算法(Edwards-curve Digital Signature Alogorithm, edDSA)由Daniel J. Bernstein等人在2011年提出,它是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。 EdDSA的一个特殊之处在于,该方案不要求每次签名都是用全新的随机数,而且该算法是确定性的。 EdDSA不直

    2024年02月16日
    浏览(49)
  • 密码学学习笔记(九):Public-Key Encryption - 公钥加密2

    如果我们知道𝑝, 𝑞 (即𝑁 = 𝑝𝑞) 我们可以在mod N中进行反幂运算。 比如: 我们有一个单向陷门函数,非常适合加密。  取两个大素数,然后N = 𝑝𝑞, 然后挑选一对𝑒, 𝑑  加密:给定𝑃𝐾 = (𝑁, 𝑒) 和一条消息𝑚 在里面 计算密文𝑐 :  解密:给定一个密文𝑐

    2024年02月13日
    浏览(50)
  • 密码学学习笔记(二十一):SHA-256与HMAC、NMAC、KMAC

    SHA-2是广泛应用的哈希函数,并且有不同的版本,这篇博客主要介绍SHA-256。 SHA-256算法满足了哈希函数的三个安全属性: 抗第一原像性 - 无法根据哈希函数的输出恢复其对应的输入。 抗第二原像性 - 给定一个输入和它的哈希值,无法找到一个不同于该输入的新输入,使得这两

    2024年02月11日
    浏览(83)
  • 密码学学习笔记(二):对称加密(二) IND-CPA、IND-CCA安全以及分组密码操作模式

    书接上篇笔记,假设声称对手可以在给定我们方案的密文的情况下找出明文的第一位。我们如何检验这一说法? 通过加密以0或1开头的明文生成密文 将密文交给对手,等待对手决定是哪种情况,检查决定是否正确 不可区分性:  如果我们想模拟任何泄漏怎么办? 为了模拟任

    2024年02月04日
    浏览(55)
  • 密码学学习笔记(二十三):哈希函数的安全性质:抗碰撞性,抗第一原象性和抗第二原象性

    在密码学中,哈希函数是一种将任意长度的数据映射到固定长度输出的函数,这个输出通常称为哈希值。理想的哈希函数需要具备几个重要的安全性质,以确保数据的完整性和验证数据的来源。这些性质包括抗碰撞性、抗第一原象性和抗第二原象性。 抗碰撞性指的是在合理的

    2024年02月05日
    浏览(53)
  • CRYPTO现代密码学学习

    简单介绍 :RC4加密算法是一种对称加密算法,加密和解密使用同一个函数 初始化分为以下几个步骤 初始化存储0-255字节的Sbox(其实就是一个数组) 填充key到256个字节数组中称为Tbox(你输入的key不满256个字节则初始化到256个字节) 交换s[i]与s[j] i 从0开始一直到255下标结束. j是 s

    2024年02月03日
    浏览(64)
  • Games101学习笔记 - 变换矩阵基础

    缩放变换 : 1均匀缩放 2不均匀缩放 注意:上图是默认二维旋转的是以远点为圆转重心,并且逆时针旋转 旋转矩阵推导原理: 引入原因: 上面说了ax + by 的方式都可以写成矩阵的形式,但是平移的操作的公式如下,不能写成矩阵的形式。 只能写成如下: 为了同意变换,让他

    2024年02月15日
    浏览(31)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(56)
  • 图形渲染基础学习

    原文链接:游戏开发入门(三)图形渲染_如果一个面只有三个像素进行渲染可以理解为是定点渲染吗?-CSDN博客 游戏开发入门(三)图形渲染笔记: 渲染一般分为离线渲染与实时渲染,游戏中我们用的都是实时渲染。 1.实时渲染又可以分为2D渲染与3D渲染。 早期的2D渲染,是通

    2024年02月20日
    浏览(32)
  • OpenGL基础图形编程(八)变换

    OpenGL变换是本篇的重点内容,它包括计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换,以及针对OpenGL的特殊变换概念理解和用法,如相机模拟、矩阵堆栈等。学好了这章,才开始真正走进三维世界。 8.1、从三维空间到二维平面 8.1.1 相机模拟

    2023年04月25日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包