首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【GAMES101】二维变换和齐次坐标

这几天都在抽空学OpenGL、敲leetcode和看games,这里留点笔记给以后复习 games101第一节课在吹水,第二节课讲了线性代数的入门知识,比较简单,这里稍微回顾一下重点,然后开始讲第三节课的二维变换和齐次坐标...目录 向量 向量的点乘 向量的叉乘 ​二维变换 缩放 拉伸 旋转 平移 齐次坐标 向量 games101的向量是默认列向量 向量的点乘 向量的点乘就是对应的元素相乘 这个可以用来求向量之间的夹角,特别是当两个向量都是单位向量的时候...x和y不同程度的拉伸 对称变换 拉伸 往某个方向拉伸,比如x方向,y不变,x’=x+ay 旋转 逆时针旋转,这个可以通过固定两个顶点来推出这个变换矩阵 平移 对于平移,即x和y加上对应的平移量 齐次坐标...其实你可能已经发现,在变换中,缩放、拉伸和旋转都可以用一个矩阵乘法来表示,这三个变换又可以称为线性变换,唯独平移不可以用矩阵乘法表示(我尝试过了,真不行) 齐次坐标就是解决这个问题的,可以统一变换为一个矩阵乘法形式...实际上还是点,而且是这两个点的中点,因为点,确切的表示是这个: 因此通过齐次坐标,我们就可以统一变换为矩阵乘法形式 由于矩阵乘法的规律,所以多次变换是以矩阵左乘的顺序相乘的,而且是先进行线性变换再平移

19700

OpenGL坐标转换推导(十一)

代码中的vec4(position.xyz, 1)表示顶点在本地坐标系中的坐标(是一个四维的齐次坐标)。它左边乘上model矩阵,就得到了该顶点在世界坐标系中的坐标。...为了解决这个问题,我们将3维的顶点坐标换成4维的齐次坐标。所谓齐次坐标,就是在3维坐标的基础上,加上第4个维度,并把它的值设成1。...也就是说,3维坐标 变成齐次坐标就是: 当然,齐次坐标的第4个元素,也可以不是1,不过这种情况我们暂时用不到,现在我们可以简单的认为,齐次坐标就是多了第4个维度,并且它是一个固定的1。...这样一个4维的顶点坐标经过左乘一个矩阵,得到的结果也是一个4维的顶点坐标(仍然是个齐次坐标)。这个矩阵需要是4X4的。...在3维空间,假设我们把顶点坐标(x,y,z)用4维的齐次坐标表示(x,y,z,1)各个维度的坐标分别放大或缩小一个倍数对应指为 S_x,S_y,S_z,1则可以用 表示。

2.6K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    图像中的几何变换

    例如二维点p(x,y)->p(x,y,1)就成了齐次坐标,同理三维点p(x,y,z)->p(x,y,z,1)也成了齐次坐标; 齐次坐标的使用,使得几何变换更容易计算,尤其对于仿射变换(二维/三维)更加方便...,齐次变换矩阵如下表示(二维和三维),其中a≠0。...:对于仿射变换,齐次变换矩阵如下表示(二维和三维)。...投影变换: 定义:变换过程中,直线映射为直线(不一定保证平行度); 任何二维投影变换都可以用3x3可逆矩阵表示(齐次坐标);任何三维投影变换都可以用4x4可逆矩阵表示(齐次坐标)。 ?...试验结果: 1. 2D仿射变换举例:比如下左图,通过2D仿射变换,缩放,旋转,平移之后得到变换矩阵对该图片进行校正后的图像如右图: ?

    2.1K60

    【GAMES101-现代计算机图形学课程笔记】Lecture 03 Transformation

    Homogeneous coordinates (齐次坐标) 3.1 为什么需要引入齐次坐标呢?...image.png 显然上述操作并不能用矩阵乘法来表示,因此平移变换不能像前面的变换操作一样可以直接用矩阵乘法表示,所以为了让平移变换也可以以一种优雅的矩阵乘法形式表示,所以需要引入齐次坐标。...3.2 如何使用齐次坐标 以二维坐标为例,我们可以通过额外加入一个坐标来使用齐次坐标。...因此: 一个2D的点,可以表示为 (x, y, 1)^{\top} 一个2D向量,可以表示为 (x, y, 0)^{\top} 3D情况同理,表示如下: 3D point =(x, y, z, 1)...= 线性变换 + 平移变换) image.png image.png 仔细观察可以知道左边一系列的矩阵相乘其实就等价于一个3x3的矩阵,换句话说一个3x3矩阵可以对2D向量做超级多的变换。

    1K30

    OpenGL学习笔记 (三)- 坐标系与顶点变换

    文章目录[隐藏] 坐标系 局部空间 世界空间 观察空间 裁剪空间 标准化设备坐标 屏幕空间 预备知识 齐次坐标系 矩阵合成的顺序 顶点变换 模型矩阵 视图矩阵 投影矩阵 透视投影 Z-Fighting...齐次坐标系 齐次坐标就是较原先坐标增广1维度的坐标,而齐次坐标所构成的坐标系就是齐次坐标系。齐次坐标的一个重要的目的就是用于进行仿射变换。...另外,对于原先用于变换的三阶方阵,我们可以等价的改写为 除此之外,我们还可以使用齐次坐标来区分点和向量。若一个齐次坐标的w分量为0,即 ,那么这个齐次坐标就可以视为代表一个三维空间向量。...之前我们已经介绍过齐次坐标在仿射变换中的应用,现在简单介绍齐次坐标在投影几何中的应用。仿射变换中,齐次坐标的w分量通常是1。...这是一个降维的过程,通过透视除法,齐次坐标将会转为三维直角坐标系坐标。 视口变换 视口变换的操作相对简单,只需要对坐标进行简单的处理。

    4K21

    从零开始一起学习SLAM | 为什么要用齐次坐标?

    简单的说:齐次坐标就是在原有坐标上加上一个维度: ? ? 使用齐次坐标有什么优势? 齐次坐标的使用能够大大简化在三维空间中的点线面表达方式和旋转平移等操作,具体分如下几点进行说明。...同理,我们知道 三维空间的一个平面A可以用方程 ax + by + cz + d = 0 来表示,三维空间的一个点P=(x, y, z) 的齐次坐标 P’=(x, y, z, 1),类似的,点P在空间平面...(留做作业) 3、能够区分一个向量和一个点 先给出结论: (1)从普通坐标转换成齐次坐标时 如果(x,y,z)是个点,则变为(x,y,z,1); 如果(x,y,z)是个向量,则变为(x,y,z,0...使用齐次坐标,可以方便的将加法转化为乘法,方便的表达平移。 比如我们要完成将2D坐标点x=[u,v]’ 平移t=[tu, tv],如果用非齐次方法的话,是用如下的加法 ?...旋转和平移可以用一个矩阵T来表示,该矩阵T称为变换矩阵(transform matrix),这样欧氏变换就变成了线性关系,进行多次欧氏变换只需要连乘变换矩阵就行了,比如前面的两次欧氏变换使用齐次坐标就可以表示为

    2.1K10

    「音视频直播技术」OpenGL渲染之距阵变换

    观察:将3D物体从世界坐标系变换成从人眼角度看到物体的坐标系。 投影:就是将3D坐标系换成2D坐标系。也就是3D物理如何在2D平面上展示。即我们通常说的降维。...距阵 在三维图形学用(x,y,z,w)代表一个顶点,它是一个齐次坐标。 其中的 x,y 我们都知道是横轴和纵轴。 z 代表深度,比如按右手坐标来说,离我们眼睛越远的深度越深,z值也就越小。...因此,我们在三维图形学中只用到4x4矩阵,它能对顶点(x,y,z,w)作变换。顶点变换使用距阵左乘的方法,其公式如下: 矩阵 x 顶点 = 变换后的顶点。...距阵的旋转 旋转矩阵比较复杂,绕 X 轴旋转使用的距阵: 绕X轴旋转 绕 Y 轴旋转使用的距阵: 绕Y轴旋转 绕 Z 轴旋转使用的距阵: 绕Y轴旋转 累积距阵变换 前面已经学习了如何旋转、平移和缩放向量...参考 齐次坐标。 搞懂 OpenGL 矩阵转换 距阵

    1.1K20

    透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵

    如果选定了坐标系,那么一个向量可以用它在每个维度上的坐标值来表示,比如二维空间里可以表示为[x, y],三维空间可以表示为[x, y, z],更高维虽然无法想象,但仍然可以用类似的数学方式表示出来。...带着上面的两个问题,我们开始我们的齐次坐标之旅.其实齐次空间的出现主要是用于投影问题的解决.所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示. 4D齐次空间有4个分量分别是(x,y,z,w...),第四个是w,称为齐次坐标.那么在3D笛卡尔坐标系中可以使用其次坐标表示为(x/w,y/w,z/w)....那么引进齐次坐标有什么必要,它有什么优点呢? 1.它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法. 2.它可以表示无穷远的点。...n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。对于齐次坐标[a,b,h],保持a,b不变, 点沿直线 ax+by=0 逐渐走向无穷远处的过程.

    7.2K151

    3D图形学线代基础

    齐次坐标 齐次坐标就是新增一个额外的维度,用N+1维来表示N维坐标;把坐标统一转换为齐次坐标之后就可以解决组合变换中存在平移时不能用矩阵连乘表示的问题了。 首先举例说明齐次坐标,如下: ?...接着使用齐次坐标解决用矩阵表示平移变换的问题,如下: ?...使用齐次坐标顺利把平移变换转换成矩阵形式之后,存在平移的组合变换依然不能用矩阵连乘表示;因为齐次坐标的引入导致平移变换比其它线性变换多了一个维度;以二维坐标系为例,其它线性变换矩阵为 2 X 2 矩阵,...这也就是为什么处理三维问题的 ThreeJS 框架中会存在四维向量 Vector4 和四维矩阵 Matrix4 的原因了;因为三维坐标的齐次坐标为四维坐标,而四维齐次坐标对应的变换矩阵为四维矩阵。...转换为齐次坐标: ? 倒推出该向内压缩矩阵 Mc 为: ? 另外视锥体中远平面和近平面上的点经过向内压缩后 Z 轴不变,也就是说: ? 最终求出视锥体以中轴线为中心向内压缩变换矩阵如下: ?

    2.1K31

    Computer Graphics note(1):变换

    & 齐次坐标 仿射变换(affline transformations) 变换矩阵的结构性质 齐次坐标下的变换矩阵 Scale: Rotation: Translation: 其他变换 1.Inverse...对于2D变换,增加一个维度w,此时规定点和向量的齐次坐标表示如下: image.png 即对于齐次坐标而言,(x,y,w)T(w!...齐次坐标表示 类比2D中引入齐次坐标的原因,3D中的平移也不能直接写成,所以对于3D变换,增加一个维度w,此时规定点和向量的齐次坐标表示如下: image.png 同样的有对于齐次坐标而言,(x,...}a&b&c \\ d&e&f \\ g&h&i \end{pmatrix}⎝⎛​adg​beh​cfi​⎠⎞​表示线性变换 齐次坐标下的变换矩阵 3D下和2D下的缩放和平移类似,但是旋转有些不同, Scale...x方向,而矩阵定义的旋转顺序为xyz,即为x->y,y->z,x->z。

    83660

    css的2D转换

    css的2d转换 即,进行一些css的转换 坐标 描述坐标的系统有笛卡尔坐标系统和齐次坐标系。 笛卡尔坐标系 用一组数值在一组平面上表示一个点。...其坐标为右手法则(在三维上) 更多 https://en.wikipedia.org/wiki/Cartesian_coordinate_system 其下方的变换是基于笛卡尔坐标系进行变换 通过将点用矩阵进行表示...,对矩阵进行变换,(线性的变换)得到相应的结果。...其单位为css数据类型中的number 该缩放仅仅支持欧几里得平面(二维平面)上的变换 设置的...投影平面中的任何点由三元组(x,y,z)表示,称为点的齐次坐标和投影坐标 如果坐标乘以公因子,则给定的一组齐次坐标点不变 相反,当且仅当通过所有坐标乘以相同的非零常数,从另一个获得一个时,两组齐次坐标表示相同的点

    90400

    基于OpenCV的位姿估计

    它是一个3乘3的矩阵,转换3维矢量表示平面上的2D点。这些向量称为同质坐标,下面将进行讨论。下图说明了这种关系。这四个点在红色平面和图像平面之间相对应。...可以在投影矩阵中编码该变换,该投影矩阵将表示3D点的4维均匀向量转换为表示图像平面上2d点的3维均匀向量。 齐次坐标是表示计算机视觉中的点的投影坐标。...齐次坐标仅取直角坐标,并将维数增大到末端。 ? 用齐次坐标表示的笛卡尔坐标,在比例上也相等。 ? ?...旋转矩阵 然后将旋转矩阵和平移向量连接起来以创建外部矩阵。从功能上讲,外部矩阵将3D同类坐标从全局坐标系转换为相机坐标系。因此,所有变换后的矢量将相对于焦点在空间中表示相同的位置。 ?...H是单应性矩阵,是3 x 3矩阵,可将点从一个平面转换为另一个平面。在这里,变换是在Z = 0的平面和指向该点的图像平面之间进行的投影。单应性矩阵通常通过4点算法求解。

    1.8K20

    自动驾驶视觉融合-相机校准与激光点云投影

    问题在于我们得到的投影方程的问题是涉及到 z 的除法, 这使得它们是非线性的(3维), 从而使我们无法将它们转化为更方便的矩阵向量形式....在两个欧几里得坐标系之间来回移动是一种非线性操作, 但是一旦我们处于齐次坐标系中, 投影变换将变为线性, 因此可以表示为简单的矩阵向量乘法. 两个坐标系之间的转换如下图所示....欧几里得坐标->齐次坐标 n维欧氏坐标系中的一个点由具有n个分量的向量表示. 通过简单地将数字1添加为附加分量, 可以实现到(n+1)维同构坐标的转换....让我们依次看一下它们: 平移(translation): 通过添加平移向量t到P, 使得P点线性平移到新位置P'. 在齐次坐标中, 我们可以使用大小为N的单位矩阵I连接平移向量t表示....齐次坐标的优点之一是, 它们可以通过级联几个矩阵-矢量乘法来轻松组合多个变换. 平移矩阵T和旋转矩阵R一起被称为外参矩阵. 它们共同描述了如何把点从世界坐标系转换到相机坐标系.

    1.8K11

    【笔记】《游戏编程算法与技巧》1-6

    这里都按照行向量表示 3D中3x3矩阵只能表示向量的线性变换(旋转, 缩放, 错切), 但是无法表示非常常用的平移变换(非线性), 因此引入了一维(w)表示平移, 称为仿射变换....对应的4x4矩阵称为仿射变换矩阵, 此时扩展出来的4维向量坐标称为齐次坐标....注意运算最后的齐次坐标的w分量应该总保持为0或1 w为0的向量表示3D方向, w为1的向量表示3D的点 四种最基本的三维变换: 缩放: 只在需要缩放的轴对应的对角线上设置倍率, 其他位置保持0....或看为坐标系变换, 这里原本是(0, 1)的y轴变换为了(1, 1), 因此整个图形发生了倾斜: 平移: 借助了齐次坐标的特性, 行向量左乘下面的矩阵后, 如果w为1也就是3D的点的话, 矩阵最下面一行就会起到平移点的作用...而z分量本身则需要保持近似线性插值, 联立方程将近平面和远平面的深度投影到0-1从而求解出第三行的两个矩阵系数. 最后将这个视体进行一次正交投影映射到(1, -1)即可.

    4.2K31

    基础渲染系列(一)图形学的基石——矩阵

    , 因为矩阵的行和列长度不匹配。所以我们必须把我们的旋转矩阵增加到3乘3,以包含第三维空间。如果我们用零来填充它会发生什么? ? 结果的X和Y分量是正常的,但Z分量始终为零。 那是不对的。...4.1 齐次坐标 我们可以理解第四个坐标吗?它代表什么有用的东西呢?我们现在知道给它赋予值1可以实现点的重新定位。如果其值为0,则偏移量将被忽略,但缩放和旋转仍会发生。...我们现在正在使用齐次坐标。 这个想法是,空间中的每个点都可以用无限数量的坐标集表示。 最直接的形式使用1作为第四坐标。 通过将整个集合乘以任意数字,可以找到所有其他选择。 ?...它还负责从齐次坐标转换回欧几里得坐标的工作。 如果是要乘以一个方向而不是一个点,则可以使用Matrix4x4.MultiplyVector。...将所有内容除以Z坐标。 我们可以用矩阵乘法吗? 是的,通过将单位矩阵的底部行更改为[0,0,1,0]。 这将使结果的第四个坐标等于原始Z坐标。 从齐次坐标转换为欧几里得坐标,然后进行所需的划分。 ?

    5K23

    三维重建——相机几何模型和投影矩阵

    变换和齐次坐标 2.1 二维变换和齐次坐标表达 先来看看二维空间中的点,我们通常用一个二维向量来表示这个一个普通二维点p,一幅图像会由很多个二维点构成,如下图所示。...采用齐次坐标,我们很容易将各种二维变换统一到一起,用矩阵来表达这种变换: 2.2 三维变换和齐次坐标表达 在讨论相机成像时,我们需要处理三维空间中的点。因此我们来看看三维点的齐次坐标和相关的变换。...三维点的齐次表达是二维点的齐次表达的自然衍生,依然是加入1个不为0的新维度 一些基本变换用齐次坐标的表达的形式也非常相似,这里面唯一不同的是3D旋转 三维空间中的旋转有可能是绕着任何一个旋转轴进行的...很明显这里可以利用相似三角形来求解这个关系 我们用齐次坐标来表达这个过程,注意点的二维齐次坐标的特性是任意等比例变换后,表示的是同一个点。...总结 今天这篇文章主要回顾了小孔相机和薄透镜成像相机的几何模型,结合2D、3D齐次坐标和坐标变换的知识,讲解了相机矩阵。

    2.7K20

    图形中的线性代数

    如果要计算奇异值,可以按照下面公式: image.png 2D线性变换 缩放 缩放就是针对某个维度按比例缩放 image.png 这时候的输出就是[x,y]向量进行缩放后的向量。...变形 就是让向量向某个方向倾斜,矩阵如下: image.png 旋转 就是让向量以原点为中心,逆时针旋转一个角度。...执行旋转 4.乘以R的装置,就可以再旋转第一步生成的坐标系中 具体公式如下,这儿是将旋转向量旋转到了z轴上: image.png 法线的变换 法线垂直于平面,当我们对向量进行变换的时候...仿射变换 目前介绍的变换矩阵不支持平移,比如需要把某个平面沿x皱移动一定的距离,目前的变换矩阵是不支持的。那如何使用矩阵来支持平移变换呢?那就是再加一维(齐次坐标)。...对于2D空间,就可以看成先旋转成和目标坐标系同方向,然后再平移。

    93310

    相机标定

    一、基本知识 齐次坐标 把维数为n维的向量用一个n+1维向量来表示(如x,y,z转换为x,y,z,w),齐次坐标有以下性质: 以齐次坐标表表示的点,若该坐标内的数值全乘上一相同非零实数,仍会表示该点;...两个齐次坐标表示同一点,当且仅当其中一个齐次坐标可由另一个齐次坐标乘上一相同非零常数得取得; 当 Z 不为 0,则该点表示欧氏平面上的(X/Z,Y/Z); 当 Z 为 0,则该点表示一无穷远点; 原点表示为...旋转矩阵和平移变量 向量在三维坐标的旋转可以通过\vec{b}=R\vec{a}实现,其中R为针对三个坐标轴的旋转矩阵的乘积:R=R_zR_yR_x,即分别绕x、y、z轴旋转α、β、θ的角度。...,根据矩阵知识,可以通过X_w=MX_c完成转换,我们将其变换矩阵由一个旋转矩阵和平移向量组合成的齐次坐标矩阵M来表示: 变换矩阵M=\begin{bmatrix} R &0\ 0_3^T & t \...x_m,y_p=\frac{f}{Z}y_m 将上式化为齐次坐标表示形式为: 3、理想图像坐标系->实际图像坐标系(考虑畸变) 由上文提到的透镜畸变的知识,我们一共需要5个畸变参数(k1、k2、k3、

    2.4K30
    领券