在三维图形学中,几何变换大致分为三种,平移变换(Translation),缩放变换(Scaling),旋转变换(Rotation)。以下讨论皆针对DirectX,所以使用左手坐标系。
平移变换
将三维空间中的一个点[x, y, z, 1]移动到另外一个点[x', y', z', 1],三个坐标轴的移动分量分别为dx=Tx, dy=Ty, dz=Tz, 即
x' = x + Tx
y' = y + Ty
z' = z + Tz
平移变换的矩阵如下。
缩放变换
将模型放大或者缩小,本质也是对模型上每个顶点进行放大和缩小(顶点坐标值变大或变小),假设变换前的点是[x, y, z, 1],变换后的点是[x', y', z', 1],那么
x' = x * Sx
y' = y * Sy
z' = z * Sz
缩放变换的矩阵如下。
旋转变换
这是三种变换中最复杂的变换,这里只讨论最简单的情况,绕坐标轴旋转,关于绕任意轴旋转,在后续的随笔中介绍。
绕X轴旋转
绕X轴旋转时,顶点的x坐标不发生变化,y坐标和z坐标绕X轴旋转θ度,旋转的正方向为顺时针方向(沿着旋转轴负方向向原点看)。[x, y, z, 1]表示变换前的点,[x', y', z', 1]表示变换后的点。变换矩阵如下。
关于旋转的正方向,OpenGL与多数图形学书籍规定旋转正方向为逆时针方向(沿着坐标轴负方向向原点看),比如Computer Graphics C Version,p409。
绕Y轴旋转
绕Y轴旋转时,顶点的y坐标不发生变化,x坐标和z坐标绕Y轴旋转θ度。[x, y, z, 1]表示变换前的点,[x', y', z', 1]表示变换后的点。变换矩阵如下。
绕Z轴旋转
绕Z轴旋转时,顶点的z坐标不发生变化,x坐标和y坐标绕Z轴旋转θ度。[x, y, z, 1]表示变换前的点,[x', y', z', 1]表示变换后的点。变换矩阵如下。
绕坐标轴旋转的矩阵推导
上面三个旋转矩阵是如何得来的呢?我们推导一下,首先看一下二维的情况,再扩展到三维即可。实际上上面三种绕坐标轴旋转的情况属于特殊的二维旋转,比如绕Z轴旋转,相当于在与XOY平面上绕原点做二维旋转。
假设点P(x, y)是平面直角坐标系内一点,其到原点的距离为r,其与X轴的夹角为A,现将点P绕原点旋转θ度,得到点P'(x', y'),P'与X轴的夹角为B,则A = B - θ。(注意,在二维坐标中,逆时针旋转时角度为正,顺时针旋转时角度为负,下图中由P旋转到P',角度为θ,若是由P'转到P,则角度为-θ)。
于是可得下面的转换方程
(式一)
写成矩阵的形式就是
求得旋转矩阵为
由于这里使用齐次坐标,所以还需加上一维,最终变成
和前面给出的绕Z轴旋转矩阵完全吻合。
对于绕X轴旋转的情况,我们只需将式一中的x用y替换,y用z替换,z用x替换即可。替换后得到
(式二)
对应的旋转矩阵为
对于绕Y轴旋转的情况,只需对式二做一次同样的替换即可,的到的变换方程为
对应的变换矩阵为
== Happy Coding ==
相关推荐
用Mathematica处理矩阵是很方便的。 而用矩阵描述几何变换,又是非常给力的。
齐次坐标与几何变换 齐次坐标与几何变换 齐次坐标与几何变换 齐次坐标与几何变换
根据两张图片(经过变换的)中的特征点对,求解出其单应矩阵(或者变换矩阵)--多视图几何!---基于Opencv的C++源码
图形学 二维图形的几何变换 对称平移缩放旋转 矩阵实现 C++
3.4 平行与平移变换 3.5 线段比及其他与平移变换 习题3第4章 旋转变换与几何证题 4.1 中点与中心反射变换 4.2 平行四边形及其他与中心反射变换 4.3 正三角形与旋转变换 4.4 正方形、等腰直角...
图形学二维变换算法程序,矩阵的变换,C语言实现
实现图像几何变换,harris特征点检测
opengl几何变换 武汉理工大学 郭羽成 验收
基于CAD/CAM几何变换课件,包括点变换、线变换、二位变换的矩阵运算等。
三维图形几何变换是二维图形几何变换的扩展。在三维空间中,用规范化齐次坐标[x y z 1]表示三维点,变换原理是把齐次坐标点(x, y, z, 1)通过变换矩阵变换成新的齐次坐标点(x’ y’, z’, 1)
通过按键,实现二维几何变换过程,包括平移、旋转、对称、比例变换
图形学几何变换算法,参照书本的算法,原创
图像的几何变换包括图像的缩放、平移和旋转。 1.2、图像的正交变换包括图像的傅里叶变换,离散变换。 1.3、将信源分别哈夫曼编码和香龙范诺编码并分别计算信源的熵、平均码长及编码效率。
图像的几何变换包括:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。 图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。...这样就得到了原始图像与变换后图像的像素的对应关系
图像的几何变换 C++代码 能够实现相应的图像几何之间的变换
关于图像处理的几何变换 mfc源代码 平移 旋转 缩放 镜像
输入点坐标矩阵,输出坐标对应的值。可以先确定几何变换(仿射,非线性变换),然后找对应的像素值。
在屏幕中心绘制原始图形,通过按钮实现平移、比例、旋转、反射和错切这5种变换。 在屏幕中心绘制原始图形,通过按钮实现平移、比例、旋转、反射和错切这5种变换。
几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。
含有python Opengl的几何变换,包含平移旋转缩放以及多种变换的复合形式