计算机图形学课程设计报告简单图形的绘制-
计算机图形学教案

计算机图形学教案一、课程简介计算机图形学是一门涉及计算机图形、图像处理和计算机视觉等领域的重要课程。
本课程将介绍计算机图形学的基本概念、原理和应用,帮助学生掌握计算机图形学的基础知识,并提升他们在图形学领域的技能。
二、课程结构1. 计算机图形学基础- 介绍计算机图形学的历史发展和基本概念- 讨论计算机图形学的应用领域和未来发展趋势- 熟悉图像处理、图形学渲染和动画等基本技术2. 图形系统建模- 学习三维图形对象的建模和表示方法- 掌握光栅化和矢量化图形处理技术- 讨论图形系统的设计和实现3. 计算机视觉- 理解视觉系统的基本原理和功能- 学习计算机视觉的算法和应用- 探讨计算机视觉在人工智能领域的应用4. 图形学编程实践- 深入学习图形学编程语言和库- 完成实际项目,提升图形学编程能力- 探索图形学在多领域的应用案例三、教学目标1. 帮助学生全面了解计算机图形学的基本知识和技术2. 培养学生分析和解决计算机图形学问题的能力3. 提升学生在图形学领域的实际操作和应用能力4. 激发学生对计算机图形学研究的兴趣和热情四、教学方法1. 理论讲解:通过课堂讲解、案例分析等方式,向学生介绍计算机图形学的基本概念和原理2. 实践操作:组织学生参与实验、项目等实际操作,巩固理论知识并提升实践能力3. 课堂互动:鼓励学生提问、讨论,促进师生间的互动和交流4. 作业考核:布置不同形式的作业,检测学生对知识的掌握情况,促进学习效果的提升五、教材参考1. 《计算机图形学导论》2. 《OpenGL图形与游戏开发实践》3. 《计算机视觉:算法与应用》4. 《经典图形学算法实例详解》六、学习评价1. 课堂表现:出勤情况、课堂参与度等2. 作业考核:课后作业、实验报告等3. 期末考核:闭卷考试、项目实践等4. 综合评价:综合考虑以上因素,对学生进行综合评定七、总结计算机图形学作为一门新兴的学科,正逐渐成为信息技术领域的热门专业之一。
计算机图形学课程设计_透视投影图_三视图

计算机图形学程序课程设计题目:分别在四个视区内显示空间四面体的三视图、透视投影图。
学院:信息科学与技术学院专业:计算机科学与技术姓名:oc学号:oc电话:oc邮箱:oc目录一、设计概述(1)设计题目。
2(2)设计要求。
2(3)设计原理。
2(4)算法设计。
5(5)程序运行结果。
9二、核心算法流程图。
10三、程序源代码。
12四、程序运行结果分析。
24五、设计总结分析。
25六、参考文献。
26一.设计概述•设计题目计算机图形学基础(第二版)陆枫何云峰编著电子工业出版社P228-7.16:利用OpenGL中的多视区,分别在四个视区内显示图7-41所示空间四面体的主视图、俯视图、侧视图、透视投影图。
•设计要求设计内容:1. 掌握主视图、俯视图、侧视图和透视投影变换矩阵;2. 掌握透视投影图、三视图生成原理;功能要求:分别在四个视区内显示P228-图7-41所示空间四面体的主视图、俯视图、侧视图、透视投影图。
•设计原理正投影正投影根据投影面与坐标轴的夹角可分为三视图和正轴测图。
当投影面与某一坐标轴垂直时,得到的投影为三视图,这时投影方向与这个坐标轴的方向一致,否则,得到的投影为正轴测图。
1.主视图(V面投影)将三维物体向XOZ平面作垂直投影,得到主视图。
由投影变换前后三维物体上点到主视图上的点的关系,其变换矩阵为:Tv=Txoz= [1 0 0 0][0 0 0 0][0 0 1 0][0 0 0 1]Tv为主视图的投影变换矩阵。
简称主视图投影变换矩阵。
2.侧视图(W面投影)将三维物体向YOZ平面作垂直投影,得到侧视图。
为使侧视图与主视图在一个平面内,就要使W面绕Z轴正向旋转90°。
同时为了保证侧视图与主视图有一段距离,还要使W面再沿X方向平移一段距离x0,这样即得到侧视图。
变换矩阵为:Tv=Tyoz= [ 0 0 0 0 ][-1 0 0 0 ][ 0 0 1 0 ][-x0 0 0 1]Tv为主视图的投影变换矩阵。
计算机图形学课程设计

计算机图形学课程设计一、课程目标知识目标:1. 让学生掌握计算机图形学的基本概念、基本原理和基本算法,如二维图形的表示、变换、裁剪和三维图形的建模、光照模型等。
2. 使学生了解计算机图形学在实际应用中的发展现状和前景,如虚拟现实、计算机辅助设计等。
3. 帮助学生建立计算机图形学与相关学科(如数学、物理、艺术等)的联系,提高跨学科素养。
技能目标:1. 培养学生运用计算机图形学知识解决实际问题的能力,如使用相关软件进行二维绘图、三维建模等。
2. 提高学生的编程能力,使其能够使用至少一种计算机图形学编程库(如OpenGL、DirectX等)实现基本图形绘制和动画效果。
3. 培养学生的团队协作能力和沟通表达能力,通过小组项目实践,共同完成具有一定难度的计算机图形学任务。
情感态度价值观目标:1. 激发学生对计算机图形学的兴趣,培养其主动探究、创新实践的精神。
2. 培养学生具有良好的审美观,能够从美学的角度评价和优化计算机生成的图形。
3. 强化学生的版权意识,尊重他人知识产权,遵循学术道德,树立正确的价值观。
本课程针对高中年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果,以便于后续的教学设计和评估。
通过本课程的学习,期望学生能够掌握计算机图形学的基础知识,提高实际操作技能,培养良好的情感态度价值观。
二、教学内容1. 计算机图形学基本概念与历史:介绍计算机图形学的定义、发展历程、应用领域及发展趋势。
- 教材章节:第一章 计算机图形学概述- 内容安排:1课时2. 二维图形的表示与处理:讲解二维图形的数学表示、几何变换、裁剪算法等。
- 教材章节:第二章 二维图形处理- 内容安排:4课时3. 三维图形的建模与渲染:介绍三维图形的建模方法、光照模型、纹理映射等。
- 教材章节:第三章 三维图形处理- 内容安排:5课时4. 计算机动画与视觉效果:探讨计算机动画原理、关键帧动画、粒子系统等视觉效果技术。
- 教材章节:第四章 计算机动画与视觉效果- 内容安排:4课时5. 计算机图形学编程实践:学习计算机图形学编程库(如OpenGL、DirectX 等)的基本使用,完成二维和三维图形绘制实例。
计算机图形学简单的画图工具实验(实习、实训)报告

实验(实习、实训)报告课程(项目)名称:实用计算机图形学实训学院:师范学院专业:计算机科学与技术班级:学号:姓名:成绩:年月日图形软件开发一、任务与目的实验任务为在理解直线、圆、方、区域填充等的基础上,进行小型图形应用软件的开发。
综合运用所学过的知识掌握小型图形软件的绘制。
软件的主要功能包括图形的绘制,颜色的设置和保存等功能。
本软件具有使用性、稳定性、易用性,和可维护性的特点,用户可以根据需要对其功能进行填充、完善与修改,使其符合自己的要求。
二、原理(条件)2.1、所用的软件VC++6.0 是Microsoft 公司推出的一个基于Windows 系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。
MFC 中封装了大部分Windows API 函数和Windows 控件,它包含的功能涉及到整个Windows 操作系统。
MFC 不仅给用户提供了Windows 图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows 应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。
另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。
因此,使用VC++提供的高度可视化的应用程序开发工具和MFC 类库,可使应用程序开发变得简单。
MFC(Microsoft Foundation Classes) ,是一个微软公司提供的类库(class libraries)以C++类的形式封装了Windows 的API,,它包含了窗口等许多类的定义。
各种类的集合构成了一个应运程序的框架结构,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows 句柄封装类和很多Windows 的内建控件和组件的封装类。
MFC 6.0 版本封装了大约200 个类,其中的一些可以被用户直接使用。
计算机图形学实验报告

计算机图形学实验报告
在计算机图形学课程中,实验是不可或缺的一部分。
通过实验,我们可以更好地理解课程中所学的知识,并且在实践中掌握这些
知识。
在本次实验中,我学习了如何使用OpenGL绘制三维图形,并了解了一些基本的图形变换和视图变换。
首先,我们需要通过OpenGL的基本命令来绘制基本图形,例
如线段、矩形、圆等。
这些基本的绘制命令需要首先设置OpenGL 的状态,例如绘制颜色、线段宽度等,才能正确地绘制出所需的
图形。
然后,在实验中我们学习了图形的变换。
变换是指通过一定的
规则将图形的形状、位置、大小等进行改变。
我们可以通过平移、旋转、缩放等变换来改变图形。
变换需要按照一定的顺序进行,
例如先进行旋转再进行平移等。
在OpenGL中,我们可以通过设
置变换矩阵来完成图形的变换。
变换矩阵包含了平移、旋转、缩
放等信息,通过矩阵乘法可以完成图形的复合变换。
最后,视图变换是指将三维场景中的图形投影到二维平面上,
成为我们所见到的图形。
在实验中,我们学习了透视投影和正交
投影两种方式。
透视投影是指将场景中的图形按照视点不同而产
生不同的远近缩放,使得图形呈现出三维感。
而正交投影则是简单地将场景中的图形按照平行投影的方式呈现在屏幕上。
在OpenGL中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。
通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。
在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。
计算机图形学课程设计报告

计算机图形学课程设计报告LT二、总体设计2.1、过程流程图2.2、椭圆的中点生成算法1、椭圆对称性质原理:(1)圆是满足x 轴对称的,这样只需要计算原来的1/2点的位置; (2)圆是满足y 轴对称的,这样只需要计算原来的1/2点的位置;通过上面分析可以得到实际上我们计算椭圆生成时候,只需要计算1/4个椭圆就可以实现对于所有点的生成了。
2、中点椭圆算法内容:(1)输入椭圆的两个半径r1和r2,并且输入椭圆的圆心。
设置初始点(x0,y0)的位置为(0,r2);(2)计算区域1中央决策参数的初始值p = ry*ry - rx*rx*ry + 1/4*(rx*rx);(3)在区域1中的每个Xn为止,从n = 0 开始,直到|K|(斜率)小于-1时后结束;<1>如果p < 0 ,绘制下一个点(x+1,y),并且计算p = p + r2*r2*(3+2*x);<2>如果P >=0 ,绘制下一个点(x+1,y-1),并且计算p = p + r2*r2*(3+2*point.x) - 2*r1*r1*(y-1)(4)设置新的参数初始值;p = ry*ry(X0+1/2)*(X0+1/2) + rx*rx*(Y0-1) - rx*rx*ry*ry; (5)在区域2中的每个Yn为止,从n = 0开始,直到y = 0时结束。
<1>如果P>0的情况下,下一个目标点为(x,y-1),并且计算p = p - 2rx*rx*(Yn+1) + rx*rx;<2>如果p<=0的情况下,下一个目标点为(x+1,y-1),并且计算p = p - 2rx*rx*Y(n+1) + 2ry*ry*(Xn+1)+rx*rx;(6)更具对称性原理计算其他3个象限的坐标。
(7)急速拿出中心位置在(x1,y1)的位置x = x + x1; y = y + y1;2.3、直线的Bresenham算法原理这种生成直线的算法与数值微分法类似,每次迭代在增量最大方向上均走一步,其方向由增量的正负而定;另一方向上是否也走,取决于计算出来的误差项,误差项所记录的方向同最大增量方向垂直。
计算机图形学实验报告

计算机图形学实验报告
实验目的:通过本次实验,深入了解并掌握计算机图形学的基本原理和相关技术,培养对图形处理的理解和能力。
实验内容:
1. 图像的基本属性
- 图像的本质及表示方法
- 像素和分辨率的概念
- 灰度图像和彩色图像的区别
2. 图像的处理技术
- 图像的采集和处理
- 图像的变换和增强
- 图像的压缩和存储
3. 计算机图形学的应用
- 图像处理在生活中的应用
- 计算机辅助设计中的图形学应用
- 三维建模和渲染技术
实验步骤和结果:
1. 在计算机图形学实验平台上加载一张测试图像,分析其像素构成
和基本属性。
2. 运用图像处理技术,对测试图像进行模糊、锐化、色彩调整等操作,观察处理后的效果并记录。
3. 学习并掌握计算机图形学中常用的处理算法,如卷积、滤波等,
尝试应用到测试图像上并进行实验验证。
4. 探讨计算机图形学在数字媒体制作、虚拟现实、计算机辅助设计
等领域的应用案例,并总结其在实践中的重要性和价值。
结论:
通过本次实验,我对计算机图形学有了更深入的了解,掌握了图像
处理技术的基本原理和应用方法。
计算机图形学作为一门重要的学科,对多个领域有着广泛的应用前景,有助于提高数字媒体技术、虚拟现
实技术等领域的发展水平。
希望在未来的学习和工作中能进一步深化
对计算机图形学理论和实践的研究,不断提升自己在这一领域的专业
能力和创新意识。
计算机图形学课程设计完本

1中文摘要本次课程设计采用OpenGL来完成。
OpenGL是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。
OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
本次课程设计是在win7系统下VC++6.0中的win32环境中,通过使用OpenGL所提供的标准库函数,综合图形学里的坐标转换,投影变换,光照以及纹理等知识,实现一个简单的太阳系的运行状况。
该系统仅做演示使用,将只包括太阳,地球与月亮,并且不保证相关数据的设定准确性。
目录一、课程设计任务及要求 (1)二、需求分析 (1)三、系统设计 (1)四、详细设计 (3)4.1 初始化的设定 (3)4.2 光源的位置与观察位置的设定 (4)4.3 纹理映射的设置 (5)4.4 各星球球体的绘制 (7)4.5 星球公转轨道 (9)4.6 人机交互式的实现 (10)五、运行调试与分析讨论 (12)5.1 程序运行截图 (12)5.2 结果分析 (13)六、设计体会与小结 (14)七、参考文献 (16)一、课程设计任务及要求1.利用OpenGL创建太阳,地球,月亮三个球体。
2. 实现“月亮绕着地球转,地球绕着太阳转”。
3. 为太阳,地球,月亮附上不同的纹理。
4. 具有较好的动画效果,消除闪烁现象。
5. 其他功能的添加。
二、需求分析本次课程设计使用的编译软件为Visual C++ 6.0。
设计中通过调用OpenGL函数库以来完成太阳,月亮,地球的球体绘制与纹理的加载,通过矩阵的变换以实现星球的运动效果。
从而模拟出太阳系的运行效果动画。
在之后,加入星球的轨道轨迹,使得模拟系统3D效果更加明显。
并加入人机交互操作。
通过“q,w,e,s,a,d”键来调整观察视角,可以实现全方位对此系统进行观察,使系统具有一定的可操作性。
三、系统设计本次课题为:实现太阳系运行动画。
系统设计步骤为:1.太阳,地球,月亮三个球体的创建。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机图形学》课程设计报告学生姓名:学号:学院:班级:题目: 简单图形的绘制职称2015年7月1日目录目录 (I)一、选题背景 (1)二、算法设计 (2)2.1 绘制直线、圆、椭圆、抛物线 (2)2.1.1 绘制直线 (2)2.1.2 绘制圆 (2)2.1.3 绘制椭圆 (2)2.1.4 绘制抛物线 (2)2.2 三维几何变换 (2)三、程序及功能说明 (5)3.1 绘制直线、圆、椭圆、抛物线...... (5)3.1.1 绘制直线 (5)3.1.2 绘制圆 (5)3.1.3 绘制椭圆 (5)3.1.4 绘制抛物线 (6)3.2 图形的平移 (6)3.3 图形的旋转 (6)3.4 图形的缩放 (7)四、结果分析 (7)4.1 绘制直线、圆、椭圆、抛物线 (7)4.1.1 直线 (7)4.1.2 圆 (8)4.1.3 椭圆 (8)4.1.4 抛物线 (8)4.2 图形的平移 (9)4.3 图形的旋转 (10)4.4 图形的缩放 (11)五、总结 (10)六、课程设计心得体会 (14)参考文献 (15)源程序 (16)一、选题背景二、算法设计2.1 绘制直线、圆、椭圆、抛物线2.1.1 绘制直线通过两个点的坐标来绘制直线。
计算机图形学中二维图形在显示输出之前需要扫描转换,生成直线的算法一般有DDA 算法和中点算法。
2.1.2 绘制圆通过运用圆的参数方程cos ;sin x a r y b r θθ=+=+来绘制圆的图形,其中[0,2]θπ∈,(a,b )为圆心,r 为半径,运用参数方程,只需要确定半径的长度和圆心的位置,即可绘制出圆。
2.1.3 绘制椭圆通过运用椭圆的参数方程cos ;sin x a y b θθ==来绘制椭圆的图形,其中[0,2]θπ∈,是已知的变量,a ,b 分别为长半轴,短半轴,当确定a 和b 后,通过参数方程即可得到这个椭圆的方程。
2.1.4 绘制抛物线根据点绘制抛物线图像是通过拟合完成,根据三个点的坐标,通过数据拟合,得到经过这三个点的函数关系式,从而再根据这个函数关系式绘制出抛物线上其他的点,形成一条连续的抛物线;或直接根据已知函数绘制图像是通过已知函数画出图像。
2.2 三维几何变换三维几何变换是二维几何变换的推广。
二维几何变换在齐次坐标空间中可用3⨯3的变换矩阵表示,类似的,三维几何变换在齐次坐标空间中可用4⨯4的变换矩阵表示。
三维空间中的点(),,x y z 的齐次坐标定义为(),,h h h x y z ,其中,h 为不等与零的任意常数,h x hx =,h y hy =,h z hz =。
亦即点(),,x y z 对应4维齐次坐标空间的一条直线:h hh h x hx y hy z hz w hy=⎧⎪=⎪⎨=⎪⎪=⎩ (2.2.1)通常为了简单起见,取(),,,1x y z 为(),,x y z 的齐次坐标。
(1)平移变换平移变换将点(),,P x y z 在三个坐标轴方向上分别移动距离,,x y z t t t ,得到新的一点(),,P x y z '''',它们之间的关系表示为:P P T '=+,其中,,Tx y z T t t t ⎡⎤=⎣⎦。
三维平移变换在其次坐标下的矩阵表示为:(),,1000100010001x y z x y t t t z t t T t ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦(2.2.2) (2)放缩变换三维放缩变换在齐次坐标下的矩阵表示:(),,00000000001x y z x y s s s z s s S s ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦(2.2.3) 此变换的参照点为坐标原点,我们可以按下面步骤建立关于空间任一参照点(),,r r r r P x y z 的缩放变换:(1)平移使r P 落于原点,变换为(),,r r r T x y z --; (2)进行放缩变换(),,x y z S s s s ;(3)平移r P 回到原先的位置,变换为(),,r r r T x y z 。
从而关于参照点r P 的缩放变换();,,r r r r S P x y z 为()()()();,,,,,,,,r r r r r r r x y z r r r S P x y z T x y z S s s s T x y z =-- (2.2.4) (3)旋转变换给定一点(),,P x y z ,首先将P 点y 和z 坐标表示成极坐标,即()(),,,cos ,sin x y z x r r ϕϕ=,其中r =。
将P 点绕x 轴旋转θ角后,得到(),,P x y z ''''。
易知:()()cos sin x x y r z r ϕθϕθ⎧'=⎪'=+⎨⎪'=+⎩ (2.2.5)上式矩阵形式为:1000cos sin 0sin cos x x y y z z θθθθ'⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥'=-⎢⎥⎢⎥⎢⎥'⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ (2.2.6)从而绕x 轴旋转θ角的变换在齐次坐标下的矩阵表示为:()10000cos sin 00cos sin 00001x R θθθθθ⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥⎣⎦(2.2.7) 类似的,绕y 轴和z 轴的旋转θ的变换矩阵分别为:()cos 0sin 00100sin 0cos 001y R θθθθθ-⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦(2.2.8) ()cos sin 00sin cos 000010001z R θθθθθ-⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦(2.2.9) 如果要绕空间任意轴01P P →旋转θ角,可按如下步骤实现:(1)以0P 为原点O ,01P P →为Oz 轴建立新的坐标系Ox yz ;(2)求出从坐标系Oxyz 到坐标系Ox yz 的变换M ;(3)将图形对象变换到坐标系Ox yz 中;(4)在新坐标系Ox yz 中绕Oz 轴旋转θ角,变换为()z R θ; (5)将图形对象变换为原坐标系Oxyz 中,变换为1M -。
这样绕01P P →旋转θ角的变换为:()1z M R M θ- (2.2.10)三、程序及功能说明3.1 绘制直线、圆、椭圆、抛物线……3.1.1 绘制直线plot(A,B)通过运用matlab 中的plot 函数画出两点之间的直线图像。
其中A,B 为直线上的两个点的坐标,通过两点绘制直线。
3.1.2 绘制圆function circle(A,R) alpha=0:pi/50:2*pi;%角度[0,2*pi] %R=2;%半径 x=R*cos(alpha)+A(1); y=R*sin(alpha)+A(2); plot(x,y,'-') axis equal首先先对角度alpha 分割成小区间,且求出相应的cos 和sin 值,再根据输入的半径和圆心坐标A ,带入公式求得圆上的点的坐标,再绘制出图像。
3.1.3 绘制椭圆function tuocircle(a,b)t=0:pi/20:2*pi; x=a*cos(t); y=b*sin(t); plot(x,y)首先先对角度t 分割成小区间得出相应的cos 和sin 值,根据再根据输入的长半轴a 与短半轴b 完善参数方程求得椭圆上的点的坐标,再绘制出图像。
3.1.4 绘制抛物线function parabola(A,B,C)x=[A(1) B(1) C(1)]; y=[A(2) B(2) C(2)];%y=ax^2+bp=polyfit(x,y,2);t=-10:.1:10;%指定绘图区间s=polyval(p,t);plot(t,s,x,y,'or')通过三个点绘制抛物线是通过三点的拟合绘制出图像;通过函数是在一个区间上画出函数图像。
3.2 图形的平移function change(T1,V1)中:T=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1;]T(1,4)=T1(1); T(2,4)=T1(2); T(3,4)=T1(3);ALL=T%最后的变换矩阵V2=ALL*V1';V=V2;先设T为平移变换矩阵,然后通过带入平移的长度,形成最终的平移矩阵,成为最重的变换举证ALL,将ALL左乘须变换矩阵V1,最终得到变换后的图形矩阵V。
3.3图形的旋转function change2(R1,V1)R=[0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];sina=sin(R1); cosa=cos(R1);R(1,1)=cosa; R(1,2)=-sina; R(2,1)=sina; R(2,2)=cosa;ALL=R%最后的变换矩阵V2=ALL*V1';V=V2;先设R为旋转变换矩阵,首先就将带入的角度求出sina和cosa值,然后对应公式将值带入矩阵的对应位置形成最终的旋转矩阵,成为最终的变换矩阵ALL,将ALL左乘须变换矩阵V1,最终得到变换后的图形矩阵V。
3.4图形的缩放function change3(S1,V1)S=[0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 1];S(1,1)=S1(1); S(2,2)=S1(2); S(3,3)=S1(3);ALL=SV2=ALL*V1';V=V2;将S设为缩放变换矩阵,然后对应公式将缩放的值带入矩阵的对应位置形成最终的平移矩阵,成为最终的变换矩阵ALL,将ALL左乘须变换矩阵V1,最终得到变换后的图形矩阵V。
四、结果分析4.1绘制直线、圆、椭圆、抛物线4.1.1 直线>> line([1 2],[2 1])4.1.2 圆>> circle([2 3],2)4.1.3 椭圆>> tuocircle(30,0.7)4.1.4 抛物线根据三个点画出抛物线:>> parabola([1 2],[5 6],[3 9])根据函数画抛物线:4.2 图形的平移>> showCubic([0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1]) >> change([4,5,6],[0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1])平移矩阵:1004010500160001T ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦最终总变换矩阵:1004010500160001ALL ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦变换后的矩阵:45715571567146714561556156614661V ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦4.3 图形的旋转>> showCubic([0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1]) >> change2(pi/3,[0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1])旋转矩阵:0.50000.8660000.86600.50000000 1.00000000 1.0000R -⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ 最终变换矩阵:0.50000.8660000.86600.50000000 1.00000000 1.0000ALL -⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ 变换后的矩阵:0 1.0000 1.00000.50000.8660 1.0000 1.00000.3660 1.3660 1.0000 1.00000.86600.5000 1.0000 1.0000000.0000 1.00000.50000.86600.0000 1.00000.3660 1.36600.0000 1.00000.86600.50000.0000 1.0000V ⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥-⎢⎥=⎢⎥⎢⎥⎢⎢-⎢-⎢⎣⎦⎥⎥⎥⎥4.4>> showCubic([0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1]) >>change3([0.8,0.5,0.3],[0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1])缩放矩阵:0.800000000.500000000.30000000 1.0000S ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ 最终变换矩阵:0.800000000.500000000.30000000 1.0000ALL ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦变换后矩阵:000.3000 1.00000.800000.3000 1.00000.80000.50000.3000 1.000000.50000.3000 1.0000000.0000 1.00000.800000.0000 1.00000.80000.50000.0000 1.000000.50000.0000 1.0000V ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦缩放前图形:缩放后图形:五、总结这次的课程设计主要是运用软件matlb来实现的。