计算机图形学-图形的几何变换
- 格式:doc
- 大小:248.00 KB
- 文档页数:16
图形的几何变换图形的几何变换是指对于一个图形,在平面上或空间中进行比例、旋转、平移、对称等操作后,得到的新图形。
这种操作可以改变图形的大小、方向、位置等特征,广泛运用于数学、物理、美术、计算机图形等领域。
以下从不同变换类型的角度分析图形的几何变换。
一、比例变换比例变换是指将一个图形沿着某个中心点或轴线进行等比例伸缩的变换。
其结果通常是一个形状相似但大小不同的新图形。
比例变换可以分为放大和缩小两种情况,当比例因子大于1时,为放大;比例因子小于1时,为缩小。
比例变换常见的应用包括模型制作、图形的等比例缩放等。
二、旋转变换旋转变换是指将一个图形沿着某个轴心或轴线进行旋转的变换。
旋转变换可分为顺时针旋转和逆时针旋转两种情况,其结果是一个相似但方向不同的新图形。
旋转变换的角度通常用弧度制表示,旋转角度为正时为逆时针旋转,为负时为顺时针旋转,常见的应用包括风车的运动、建筑设计的转角变换等。
三、平移变换平移变换又叫做移动变换,是指将一个图形沿着某个方向进行平移的变换。
平移变换可以将图形整体沿着平移向量的方向进行移动,其结果是一个与原图形相同但位置不同的新图形。
平移变换常见的应用包括机器人的运动、物体的位移等。
平移变换也可以看作是比例变换的特殊情况,比例因子为1,即不改变图形的大小。
四、对称变换对称变换是指将一个图形沿着某个轴线进行翻折的操作。
对称变换可以分为对称、反对称和正交对称三种类型。
对称变换的结果通常是一个与原图形相等但位置镜像对称的新图形。
对称变换在分形几何、美术设计等领域都有着广泛的应用。
五、仿射变换仿射变换是指图形在平面上或空间中进行非等比例伸缩、旋转、平移和投影等操作时的变换。
仿射变换的结果通常是一个与原图形相似但有略微变形的新图形。
仿射变换包括平移变换、旋转变换、比例变换和剪切变换等。
其应用领域包括医学图像处理、计算机图形学等。
总结图形的几何变换在现代科技和艺术中有着广泛的应用。
比例变换常用于造型、模型制作和图形的等比例缩放;旋转变换常用于旋转花纹、风车运动、建筑转角的变化等;平移变换常用于运动控制、物体的位移等;对称变换常用于几何分形、美术设计等领域;仿射变换则是结合了以上变换操作的高级变换,其应用范围更加广泛。
第五章图形变换重 点:掌握二维几何变换、二维观察变换、三维几何变换以及三维观察变换。
难 点:理解常用的平移、比例、旋转变换,特别是复合变换。
课时安排:授课4学时。
图形变换包括二维几何变换, 二维观察变换,三维几何变换和三维观察变换。
为了能使各种几何变换(平移、旋转、比例等)以相同的矩阵形式表示,从而统一使用矩阵乘法运算来实现变 换的组合,现都采用齐次坐标系来表示各种变换。
有齐次坐标系齐次坐标系:n 维空间中的物体可用 n+1维齐次坐标空间来表示。
例如二维空间直线 ax+by+c=O ,在齐次空间成为 aX+bY+cW=0 ,以X 、Y 和W 为三维变量,构成没有常数项的 三维平面(因此得名齐次空间)。
点P (x 、y )在齐次坐标系中用P (wx,wy,w )表示,其中 W 是不为零的比例系数。
所以从 n 维的通常空间到 n+1维的齐次空间变换是一到多的变换,而其反变换 是多到一的变换。
例如齐次空间点P (X 、Y 、W )对应的笛卡尔坐标是 x=X/W 和y=Y/W 。
将通一地用矩阵乘法来实现变换的组合。
常笛卡尔坐标用齐次坐标表示时, W 的值取1。
采用齐次坐标系可以将平移、比例、旋转这三种基本变换都以相同的矩阵形式来表示,并统齐次坐标系在三维透视变换中有更重要的作用, 示形它使非线形变换也能采用线形变换的矩阵表式。
图形变换平移变换图示如图所示,它使图形移动位置。
新图 p'的每一图元点是原图形 p 中每个图元点在向分别移动Tx 和Ty 产生,所以对应点之间的坐标值满足关系式x'=x+Tx y'=y+Ty可利用矩阵形式表示成:[x' y' ] = : x y ] + : Tx Ty ]简记为:P'= P+T , T= : Tx Ty ]是平移变换矩阵(行向量)二堆几何变换1 1二维观察变換三维几诃变换平移变换 比例变换 陡转变换 对称变换 错切变换 仿肘变换 复合变换平移变换 比例变换 旋转变换 绕空间任意轴離转 对称变换 蜡切变换三维观察变5.1二维几何变换二维几何变换就是在平面上对二维点的坐标进行变换,从而形成新的坐标。
几何变换与变换矩阵几何变换是计算机图形学中常用的一种技术,用于对二维或三维图形进行平移、旋转、缩放和剪切等操作。
这些操作可以通过变换矩阵来描述和计算。
本文将介绍几何变换的基本概念及其与变换矩阵的关系。
一、几何变换的基本概念1. 平移变换平移变换是将图形沿着指定的方向移动一定的距离。
在二维空间中,平移变换可以通过在原始坐标上加上一个向量来实现。
例如,将原始坐标(x, y)进行平移变换得到新的坐标(x', y'),可以表示为:x' = x + dxy' = y + dy其中,dx和dy分别为在x和y方向上的平移距离。
2. 旋转变换旋转变换是将图形绕指定的点或轴旋转一定的角度。
在二维空间中,旋转变换可以通过将原始坐标(x, y)绕着指定点(xc, yc)逆时针旋转θ角度得到新的坐标(x', y'),可以表示为:x' = (x - xc) * cosθ - (y - yc) * sinθ + xcy' = (x - xc) * sinθ + (y - yc) * cosθ + yc其中,(xc, yc)为旋转中心点,θ为旋转角度。
3. 缩放变换缩放变换是将图形沿着指定的方向进行放大或缩小。
在二维空间中,缩放变换可以通过将原始坐标(x, y)分别乘以指定的缩放因子sx和sy得到新的坐标(x', y'),可以表示为:x' = x * sxy' = y * sy其中,sx和sy分别为在x和y方向上的缩放因子。
4. 剪切变换剪切变换是将图形沿着指定的方向进行截取或拉伸。
在二维空间中,剪切变换可以通过将原始坐标(x, y)进行线性变换得到新的坐标(x', y'),可以表示为:x' = x + kx * yy' = y + ky * x其中,kx和ky分别为在x和y方向上的剪切因子。
二、变换矩阵的基本概念与计算方法变换矩阵是一种矩阵表示方法,用于描述几何变换的转换规则。
几何变换的基本概念和性质几何变换是指平面或空间中的图形在不同的变化规则下发生的形态变化。
在数学和计算机图形学中,几何变换是一个重要的概念,它被广泛应用于各种领域,包括计算机视觉、机器人学、游戏开发和工程设计等。
几何变换包括平移、旋转、缩放和镜像四种基本类型。
每种变换都有其独特的性质和特点。
1. 平移(Translation)平移是指将图形沿着平行于原来位置的方向移动一定距离。
平移不改变图形的大小、形状和方向,只改变了其位置。
平移的变换规则是通过坐标的加减运算来实现的。
2. 旋转(Rotation)旋转是指将图形绕着某个点进行旋转运动。
旋转可以使图形沿着一个轴线旋转一定角度。
旋转不改变图形的大小和形状,但会改变其方向。
旋转的变换规则是通过坐标的旋转公式来实现的。
3. 缩放(Scaling)缩放是指将图形按照一定的比例进行放大或缩小。
缩放可以改变图形的大小和形状,但不改变其方向。
缩放的变换规则是通过坐标的乘除运算来实现的。
4. 镜像(Reflection)镜像是指将图形按照某条直线或平面进行对称反转。
镜像可以改变图形的方向,但不改变其大小和形状。
镜像的变换规则是通过坐标的变号来实现的。
这些几何变换具有一些重要的性质。
例如,平移和旋转是可逆的,即可以通过逆变换将图形恢复到原来的位置和方向;缩放和镜像也是可逆的,但镜像时需要注意选择合适的对称轴;任意两个几何变换都可以通过组合来实现更复杂的变换效果。
总之,几何变换是数学和计算机图形学中的重要概念,通过平移、旋转、缩放和镜像等变换可以实现对图形的形态变化。
掌握几何变换的基本概念和性质对于理解和应用相关领域的知识具有重要意义。
参考资料:。
几何变换的基本定义几何变换是指通过改变图形的位置、形状、大小或方向来实现对图形的转换。
在数学和几何学中,几何变换是广泛应用于图像处理、计算机图形学和几何推理等领域的重要概念。
本文将简要介绍几何变换的基本定义,包括平移、旋转、缩放和对称变换。
一、平移变换平移变换是指将图形沿着平行于原始位置的直线方向移动一定距离。
平移变换不改变图形的形状和大小,只改变了其位置。
设图形上的点坐标为(x, y),平移变换后的新坐标为(x', y'),则有以下公式:x' = x + ay' = y + b其中,a和b分别表示平移的水平和垂直距离。
在平面几何中,平移变换可以通过将所有点坐标加上相同的位移矢量来实现。
二、旋转变换旋转变换是指将图形绕某一点或绕原点按一定角度旋转。
旋转变换改变了图形的方向和位置,但不改变其大小和形状。
设图形上的点坐标为(x, y),旋转中心为(cx, cy),旋转角度为θ,则旋转变换后的新坐标为(x', y'),可以通过以下公式计算:x' = (x - cx) * cosθ - (y - cy) * sinθ + cxy' = (x - cx) * sinθ + (y - cy) * cosθ + cy其中,cosθ和sinθ分别表示旋转角度的余弦和正弦值。
通过调整旋转角度可以实现图形的顺时针或逆时针旋转。
三、缩放变换缩放变换是指通过改变图形的尺寸来实现对图形的变换。
缩放变换可以使图形变大或变小,但图形的形状和位置保持不变。
设图形上的点坐标为(x, y),缩放中心为(cx, cy),水平和垂直缩放比例分别为sx和sy,则缩放变换后的新坐标为(x', y'),计算公式如下:x' = (x - cx) * sx + cxy' = (y - cy) * sy + cy通过调整sx和sy的值,可以实现图形的水平或垂直方向上的缩放。
几何变换的基本概念与操作几何变换是计算机图形学中的重要概念,它可以将一个图形对象从一个位置、方向或大小变换到另一个位置、方向或大小,通过不同的变换操作,可以实现各种形状和位置的变化。
本文将介绍几何变换的基本概念和操作,包括平移、旋转、缩放和反射四种变换。
一、平移平移是指将图形对象按照指定的向量在平面内沿着直线移动,其作用是改变图形对象的位置而不改变其形状和大小。
平移操作可以用一个向量表示,向量的坐标分别表示在x轴和y轴方向上的移动距离。
平移操作的数学表达式如下:```P' = P + T```其中,P表示原始点的坐标,P'表示平移后点的坐标,T表示平移向量的坐标。
二、旋转旋转是指将图形对象按照指定的角度围绕一个中心点旋转,其作用是改变图形对象的方向而不改变其形状和大小。
旋转操作可以用一个角度表示,角度的正负决定了旋转的方向。
旋转操作的数学表达式如下:P' = R * P```其中,P表示原始点的坐标,P'表示旋转后点的坐标,R表示旋转矩阵。
三、缩放缩放是指将图形对象按照指定的比例在水平和垂直方向上进行放大或缩小,其作用是改变图形对象的大小而不改变其形状。
缩放操作可以用一个缩放因子表示,缩放因子大于1表示放大,缩放因子小于1表示缩小。
缩放操作的数学表达式如下:```P' = S * P```其中,P表示原始点的坐标,P'表示缩放后点的坐标,S表示缩放矩阵。
四、反射反射是指将图形对象按照指定的轴线进行镜像翻转,其作用是改变图形对象的位置和方向而不改变其形状和大小。
反射操作可以用一个轴线表示,轴线可以是水平、垂直或任意一条直线。
反射操作的数学表达式如下:P' = M * P```其中,P表示原始点的坐标,P'表示反射后点的坐标,M表示反射矩阵。
综上所述,几何变换是计算机图形学中的重要概念,通过平移、旋转、缩放和反射四种基本操作,可以实现对图形对象的位置、方向和大小的变化。
几何变换的概念与分类几何变换(Geometric transformation)是指在几何空间中,通过一系列数学操作改变图形的形状、大小、位置或方向的过程。
几何变换是解决计算机图形学、计算机视觉和几何建模等领域中的重要问题之一。
本文将介绍几何变换的概念与分类,以及具体的应用案例。
一、概念几何变换是通过对图形进行一系列数学操作来改变其属性的方法。
常见的几何变换包括平移(Translation)、旋转(Rotation)、缩放(Scaling)和翻转(Reflection)等。
其中,平移是指在平面或者空间中保持图形大小和形状不变的情况下,仅改变图形的位置;旋转是指绕某一点或某一轴将图形按一定角度进行旋转;缩放是指通过乘以一个比例因子来改变图形的大小;翻转是指将图形关于某一轴进行对称。
二、分类根据几何变换的性质和特点,可以将几何变换分为刚体变换和仿射变换两大类。
1. 刚体变换刚体变换(Rigid transformation)是指变换过程中保持图形大小、形状和相对位置不变的几何变换。
常见的刚体变换包括平移和旋转。
平移是通过改变图形的位置来实现,旋转则是通过围绕某一点进行旋转来实现。
刚体变换可以应用于很多领域。
例如,在计算机动画中,通过对角色模型进行平移和旋转,可以实现动作的平移和旋转效果;在机器人运动规划中,通过对机器人进行平移和旋转来规划其路径。
2. 仿射变换仿射变换(Affine transformation)是指在变换过程中图形的边长比例和平行性质保持不变的几何变换。
除了平移和旋转,仿射变换还包括缩放和翻转。
缩放是通过改变图形的大小来实现,翻转则是通过关于某一轴进行对称来实现。
仿射变换是计算机图形学、计算机视觉和几何建模等领域中非常重要的变换方式。
例如,在图像处理中,通过对图像进行仿射变换可以实现图像的旋转、缩放和翻转效果;在地理信息系统(GIS)中,通过对地图进行仿射变换可以实现地图的伸缩和旋转。
贵州大学实验报告学院:计算机科学与技术专业:软件工程班级:软件132 姓名常伟学号1308060226 实验地点一教704 实验时间2016.5.9 指导教师李智实验成绩实验项目名称试验四、图形的几何变换实验目的1.掌握矢量运算。
2.熟练使用齐次坐标。
3.掌握采用齐次坐标进行几何变换。
实验要求1.理解几何图形变换的原理,编程实现图形的几何变换。
2.编程界面友好,实现变换的所有方式,包括平移、缩放、旋转、对称、错切以及基本变换基础上的组合变换。
3.几何变换使用矩阵进行运算。
实验原理二维齐次坐标变换的矩阵的形式是⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡ihgfedcba这个矩阵的每一个元素都是有特殊含义的。
其中,⎥⎦⎤⎢⎣⎡edba可以对图形进行缩放、旋转、对称和错切等变换;⎥⎦⎤⎢⎣⎡fc是对图形进行平移变换;[]hg是对图形作投影变换;[]i 则是对图形进行缩放变换。
下面给出几个基本变换的矩阵运算。
1.平移变换⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡++=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1),(111111''yxTyxyxttttttyxyxyxyx2.缩放变换⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡∙∙=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1),(1111''yxssSysxsyxssyxyxyxyx3.旋转矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1)(1cossinsincos11cossinsincos1''yxRyxyxyxyxθθθθθθθθθ4.对称矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡++=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1111''eydxbyaxyxedbayx对称变换其实只是a、b、d、e取0、1等特殊值产生的一些特殊效果。
5.错切变换⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡++=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡111111''ydxbyxyxdbyx(1)当d=0时,图形的y坐标不变,x坐标随初值(x,y)及变换系数b作线性变化。
(2)当b=0时,图形的x坐标不变,y坐标随初值(x,y)及变换系数d作线性变化。
实验步骤1.设计图形界面。
本实验使用visual studio 2012 C#搭建窗口,设置相应的组件。
如下图。
如图所示,combox此时显示的字符是“平移”,在其下面显示的是关于平移的操作组件。
当选择combox的不同项时,其下面就显示对应的操作组件。
2.运行效果如下。
(1)平移从图中可见,原图形的颜色为黄绿色,平移后的图形为黑色。
(2)旋转(3)对称如图,这是原图形关于x轴对称后由对称后的图形关于原点对称得到的图形。
在界面中可看到一个text为“新变换”的checkbox,其作用是可以自由选择变换原图形或者变换变换后的图形。
(4)缩放有图可知,此时的x、y的缩放比例都是0.5,也就是原图形的x和y都关于原点缩小为原来的一半。
(5)错切此时y上的错切系数为0,即图形的y值不变,x的值随x上的错切系数变化。
(6)三角形的一顶点保持不变,另外两个顶点按缩放比例缩小,然后关于直线-2x+4y+3对称。
这是一个组合变换的问题,要使得三角形的一顶点保持不变,就要将该顶点移动到原点,缩放后再平移回去,然后再关于直线对称就行了。
组合变换时,先作用的变换矩阵在右端,后作用的变换矩阵在左端。
(7)四边形以原点为中心,以15°为间隔旋转。
在程序中设置一个旋转增量,每变换一次,就加上旋转增量,就可得到上图的结果。
实验数据由于代码篇幅过长,下面是代码的主要部分。
private void initMatrix() {temp = new double[3][];for (int i = 0; i < temp.Length; i++){temp[i] = new double[3];}resetTemp(ref temp);temp1 = new double[3][];for (int i = 0; i < temp1.Length; i++){temp1[i] = new double[3];}resetTemp(ref temp1);//初始化平移矩阵move = new double[3][];for (int i = 0; i < move.Length; i++){move[i] = new double[3];}for (int i = 0; i < move.Length; i++) {for (int j = 0; j < move[i].Length; j++) {if (i == j){move[i][j] = 1;}else {move[i][j] = 0;}}}//初始化缩放矩阵zoom = new double[3][];for (int i = 0; i < zoom.Length; i++){zoom[i] = new double[3];}for (int i = 0; i < zoom.Length; i++){for (int j = 0; j < zoom[i].Length; j++) {if (i == j){zoom[i][j] = 1;}else {zoom[i][j] = 0;}}}//初始化旋转矩阵rotate = new double[3][];for (int i = 0; i < rotate.Length; i++){rotate[i] = new double[3];}for (int i = 0; i < rotate.Length; i++){for (int j = 0; j < rotate[i].Length; j++) {if (i == j && i == 2){rotate[i][j] = 1;}else {rotate[i][j] = 0;}}}//初始化对称矩阵symmetry = new double[3][];for (int i = 0; i < symmetry.Length; i++){symmetry[i] = new double[3];}for (int i = 0; i < symmetry.Length; i++){for (int j = 0; j < symmetry[i].Length; j++) {if (i == j){symmetry[i][j] = 1;}else {symmetry[i][j] = 0;}}}//初始化错切矩阵shear = new double[3][];for (int i = 0; i < shear.Length; i++){shear[i] = new double[3];}for (int i = 0; i < shear.Length; i++){for (int j = 0; j < shear[i].Length; j++) {if (i == j){shear[i][j] = 1;}else {shear[i][j] = 0;}}}//初始化目标齐次坐标target = new double[3][];for (int i = 0; i < target.Length; i++){target[i] = new double[1];}for (int i = 0; i < target.Length; i++){for (int j = 0; j < target[i].Length; j++) {if (i == 2 && j == 0){target[i][j] = 1;}else {target[i][j] = 0;}}}//初始化结果齐次坐标result = new double[3][];for (int i = 0; i < result.Length; i++){result[i] = new double[1];}for (int i = 0; i < result.Length; i++){for (int j = 0; j < result[i].Length; j++){if (i == 2 && j == 0){result[i][j] = 1;}else{result[i][j] = 0;}}}}private void coordinate() {Brush brush = new SolidBrush(Color.Black);Pen pen = new Pen(brush,1);//获取x轴getGph().DrawLine(pen, new Point(0, panel1.Height / 2), newPoint(panel1.Width, panel1.Height / 2));getGph().DrawLine(pen, new Point(panel1.Width, panel1.Height / 2), new Point(panel1.Width-10, panel1.Height / 2-5));getGph().DrawLine(pen, new Point(panel1.Width, panel1.Height / 2), new Point(panel1.Width - 10, panel1.Height / 2 + 5));//获取y轴getGph().DrawLine(pen, new Point(panel1.Width / 2, 0), newPoint(panel1.Width / 2, panel1.Height));getGph().DrawLine(pen, new Point(panel1.Width / 2, 0), newPoint(panel1.Width / 2-5, 10));getGph().DrawLine(pen, new Point(panel1.Width / 2 , 0), newPoint(panel1.Width / 2+5,10 ));//获取xoygetGph().DrawString("O(0,0)", new Font("微软雅黑", 8), brush, new Point(panel1.Width/2-13, panel1.Height/2));getGph().DrawString("X", new Font("微软雅黑", 8), brush, newPoint(panel1.Width-15, panel1.Height / 2+5));getGph().DrawString("Y", new Font("微软雅黑", 8), brush, newPoint(panel1.Width/2+8,5));//原点坐标centerX = panel1.Width / 2;centerY = panel1.Height / 2;}private void GetPolygon(List<Point> point,Color color) {for (int i = 0; i <point.Count; i++) {Brush brush = new SolidBrush(color);Pen pen = new Pen(brush, 1);Point st = point[i];Point end = point[(i + 1) % point.Count];st.X += centerX;st.Y += centerY;end.X += centerX;end.Y += centerY;getGph().DrawLine(pen,st,end);Brush brushString = new SolidBrush(Color.Black);getGph().DrawString("("+ (st.X-centerX) + ","+ (centerY-st.Y) + ")", new Font("微软雅黑", 6), brushString, new Point(st.X, st.Y - 12));}}private void changePolygon(double[][] matrix) {List<Point> newPoint=new List<Point>();//用来暂时存储要变换的目标链表if (checkBox1.Checked){for (int i = 0; i < point.Count; i++){newPoint.Add(point[i]);}}else {if (chgPoint.Count == 0){for (int i = 0; i < point.Count; i++){newPoint.Add(point[i]);}}else {for (int i = 0; i < chgPoint.Count; i++) {newPoint.Add(chgPoint[i]);}}}chgPoint.RemoveAll(clear);//准备接收再次变换后的顶点for (int p = 0; p < newPoint.Count; p++){target[0][0] = newPoint[p].X;target[1][0] = newPoint[p].Y;for (int i = 0; i < matrix.Length; i++){for (int j = 0; j < matrix[i].Length; j++){for (int k = 0; k < target[0].Length; k++){result[i][k] += matrix[i][j] * target[j][k];}}}chgPoint.Add(new Point((int)result[0][0], (int)result[1][0]));resetResultMatrix();}GetPolygon(chgPoint, Color.Black);}private void transformation(ref double[][] result,ref double[][] first,ref double[][] second) {//计算矩阵相乘for (int i = 0; i < first.Length; i++){for (int j = 0; j < first[i].Length; j++){for (int k = 0; k < second[0].Length; k++){result[i][k] += first[i][j] * second[j][k];}}}}实验总结一开始做几何图形变换的时候,嫌使用矩阵麻烦,于是自己动手计算,在程序中使用计算后的公式来完成几何变换。