欢迎来到天天文库
浏览记录
ID:43490134
大小:235.21 KB
页数:4页
时间:2019-10-08
《基于仿射变换的三维到二维转换算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第11卷第27期2011年9月科学技术与工程Vol.11No.27Sep.20111671—1815(2011)27-6743-04ScienceTechnologyandEngineering2011Sci.Tech.Engrg.基于仿射变换的三维到二维转换算法刘婧(渭南师范学院,渭南714000)摘要根据二维仿射变换公式推导了三维仿射变换公式,给出了三维坐标系中的仿射矩阵表示公式。同时提出了一种简单的三维到二维的坐标转换公式,并且使用基于C++的QT类库对这种算法进行了实现。这种算法可以应用于一些使用二维模拟三维的图形处理软件中
2、,比如flash中的三维变换模拟和GUI编程中的三维图形变换等情况下。关键词仿射变换三维C++QT中图法分类号TP391.75;文献标志码A进行一些三维图形处理要用到三维图形的旋何知识很容易推出x'=xcosθ-ysinθ,y'=xsinθ+转、平移、拉伸等变换。同时计算机屏幕又是一个ycosθ。用矩阵表示为(1)式。二维的平面,如何简单地将三维图形表示在二维平x'cosθ-sinθx()(1)面上。一般的教材和网络上二维仿射变换公式和y'=(sinθcosθ)()y案例较多,但很少有三维仿射变换的推导和实1.1.2缩放[1]例。于是
3、本文根据二维仿射变换推导了三维仿缩放公式为x'=sxx与y'=syy,sx和sy为x坐射变换矩阵的表示。并借助三维图形在平面上的标和y坐标的缩放因子。其中用矩阵表示为式斜二侧画法对三维坐标进行了降维处理。使得三(2)。维图形变换和平面表示一并得到了解决。x'sx0x()(2)y'=(0s)()yy1坐标变换和仿射变换1.2仿射变换前面研究了二维坐标的旋转和缩放。其他二在线性代数中,线性变换能够用矩阵表示。如维坐标变换,例如切变、反射、投影等都可以用类似果T是一个把Rn映射到Rm的线性变换,且x珒是一的方法表示。可见常见的二维图形变换最
4、终都可个具有n个元素的列向量,那么我们把m×n的矩[4]用一个2×2的矩阵加以表示。阵A,称为T的变换矩阵,其表示形式为:T(x珒)=Ax珒。前面研究的所有变换都是线性变换。某些其仿射变换是线性变换的一种,经常应用于计算机图他变换(如平移)不是线性的,不能表示为与2×2[2]形学中。矩阵相乘的形式。假定要从点(2,1)开始,将其1.1仿射变换在二维图形中的应用旋转90度,在x方向将其平移3个单位,在y方向1.1.1旋转将其平移4个单位。可通过先使用矩阵乘法再使设p点坐标为(x,y),将p点绕坐标原点逆时针用矩阵加法来完成此操作。如式(
5、3)所示。旋转θ角度后得点p',设p'坐标为(x',y')。借助几0-1232()+=(3)10()1()4()62011年6月28日收到其变化过程可用图1表示:作者简介:刘婧(1982—),四川成都人,硕士,渭南师范学院数学与信息科学学院教师,研究方向:基础数学。6744科学技术与工程11卷图样从A11到A33的三行三列表示了三维坐标的线性变换组合。而A14、A24、A34表示了三维坐标的平移。采用类似式(1)的推导可得出三维坐标以z轴为轴旋转θ角(无平移)的仿射矩阵为式(7)所示。cosθ-sinθ00æöçsinθcosθ00÷
6、ç÷(7)ç0010÷ç÷è0001ø三维坐标以x和y轴为轴旋转θ角(无平移)的仿射图1旋转平移仿射矩阵为式(8)和式(9)所示。仿射变换是一个线性变换(与2×2矩阵相乘)1000æö外加一个平移变换(与1×2矩阵相加)。将仿射变ç0cosθ-sinθ0÷ç÷(8)换存储于一对矩阵(一个用于线性部分,一个用于ç0sinθcosθ0÷ç÷平移)的替换方案是将整个变换存储于3×3矩阵。è0001ø若要使其起作用,平面上的点必须存储于具有虚拟cosθ0-sinθ0æö第三坐标的1×3矩阵中。通常的方法是使所有的ç0100÷ç÷(9)第三坐标
7、等于1。例如上式可以表示为式(4)的çsinθ0cosθ0÷ç÷形式。è001øæ0-13öæ2öæ2ö三维坐标的任意旋转变换都可以分解为以x,y,z为ç÷ç÷ç÷1041=6(4)轴的旋转的组合。所以知道了以上三个变换公式。çç÷÷çç÷÷çç÷÷è001øè1øè1ø其他的变换都可以组合得来。式(4)中最前面的3×3矩阵称为仿射矩阵,其一般将式(7)、式(8)、式(9)的算法可定义一个如形式如式(5)所示。其中A11,A12,A21,A22构成的2×下的C++类Point3D来封装:2矩阵表示了坐标的一般线性变换的组合。A13,A
8、23classPoint3D分别表示了x坐标和y坐标的平移量。其余元素固{public:定为0或1。floatx;æA11A12A13öfloaty;ç÷çA21A22A23÷(5)floatz;ç÷è001øvoidr
此文档下载收益归作者所有