计算机图形学实验指导书.doc_第1页
计算机图形学实验指导书.doc_第2页
计算机图形学实验指导书.doc_第3页
计算机图形学实验指导书.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 使用Bresenham画线算法,绘制任意方向的直线一、实验目的直线是图形中常见的基本元素,因此直线生成算法是图形算法中较为常用的算法。Bresenham算法是计算机图形学领域中使用最广泛的直线扫描转换算法,通过本实验,使学生掌握绘制直线的程序设计方法,加深学生对图形算法的理解和掌握。二、实验原理Bresenham算法是通过在每列象素中确定与理想直线最近的象素来进行直线的扫描转换的。算法原理是:过各行、各列象素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求象素。图1-1Bresenham算法所用误差项的几何含义如图1-1所示,假设y列的象素已确定,其行下标为x。那么下一个象素的列坐标必为y+1。而行坐标要么不变,要么递增1。是否递增1取决于如图所示的误差项d的值。因为直线的起始点在象素中心,所以误差项d的初始值为0。y下标每增加1,d的值相应递增直线的斜率值,即d=d+k(k=y/x为直线斜率)。一旦d=1时,就把它减去,这样保证d始终在0、1之间。当d0.5时,直线与y+1垂直网络线交点最接近于当前象素(x,y)的右上方象素(x+1,y+1);而当d=0时,下一象素的x下标增加1,而当e0时,下一象素的x下标不增。E的初始值为0.5。三、实验内容1) 理解并掌握Bresenham画线算法。2) 使用Bresenham画线算法,绘制任意方向的直线,要求用C或C+编写源程序。3) 编译调试源程序,生成可执行文件。4) 运行程序,观察所得结果。5) 打印源程序或把源程序以文件的形式提交。四、实验注意事项本实验要求使用Bresenham画线算法,绘制任意方向的直线。不允许使用语言库中的画线函数。实验二 线段裁剪一、实验目的裁剪算法是计算机图形学中常用的算法,而且很多图形软件都提供裁剪工具。考虑实用性,要求学生利用Cohen-SutherLand裁剪算法,实现线段裁剪。通过本实验,使学生加深对Cohen-SutherLand裁剪算法的理解和掌握,提高有关图形剪裁的程序设计能力。二、实验原理Cohen-SutherLand算法思想是:直线和窗口的关系可以分为如下三类:1) 如果整条直线完全在窗口之内。此时,不需剪裁,显示整条直线,简称“取”之。2) 如果整条直线明显在窗口之外,此时,不需剪裁,不显示直线。简称“弃”之。3) 如果部分直线在窗口之内,部分在窗口之外。此时,需要求出直线与窗框之交点,并将窗口外的直线部分剪裁掉,显示窗口内的部分。图2-1多边形裁剪区域编码 图2-2线段裁剪为使计算机能够快速判断一条直线段与窗口属何种关系,采用如下编码方法。延长窗口的边,把未经裁剪的图形区域分成九个区,如图2-1所示。每个区具有一个四位代码,即四位二进制数,从左到右各位依次表示上、下、右、左。裁剪一条线段(如图2-2)时,先求出端点P1P2所在的区号code1和code2。若code1=0, 且code2=0,则说明线段P1P2均在窗口内,那么整条线段也必在窗口内,应取之。若code1和code2经按位与运算后的结果code1&code20,则说明两个端点同在窗口的上方、下方、左方或右方。在这种情况下,可判断线段完全在窗口外,可弃之。如果上述两种条件均不成立,则按第三种情况处理。求出线段与窗口某边的交点,在交点处把线段一分为二,其中必有一段完全在窗口外,可弃之。再对另一段重复上述处理。在实现本算法时,不必把线段与每条窗口边界依次求交,只要按顺序检测到端点的编码不为0,才把线段与对应的窗口边界求交。三、实验内容1) 理解并掌握Cohen-SutherLand算法。2) 使用Cohen-SutherLand算法,实现对线段的裁剪,要求用C或C+编写源程序。3) 编译调试源程序,生成可执行文件。4) 运行程序,观察所得结果。5) 打印源程序或把源程序以文件的形式提交。实验三 Bezier曲线的绘制一、实验目的 Bezier曲线是一种广泛应用于外形设计的参数曲线,本实验要求根据三次Bezier曲线的参数方程绘制一条三次Bezier曲线。通过本实验,使学生加深对Bezier曲线的理解和掌握,提高绘制Bezier曲线的设计能力。二、实验原理Bezier曲线是一种参数曲线,它通过对一些特定点的控制来控制曲线的形状,我们称这些点为控制顶点。Bezier曲线定义:(1)Bezier曲线是由一组折线集,或称之为Bezier特征多边形来定义的。(2)曲线的起点和终点与该多边形的起点、终点重合,且多边形的第一条边和最后一条边表示了曲线在起点和终点处的切矢量方向。(3)当给定空间n+1个点的位置矢量P0,P1,Pn时,则Bezier曲线上各点坐标的插值公式为: 下图所示为三次Bezier曲线的形成原理,这是由四个位置矢量Q0、Q1、Q2、Q3定义的曲线。Bezier曲线的一般数学表达式为:式中Qi各顶点的位置矢量, 为Bernstein基函数,并有 当n=3时,上式变为三次Bezier曲线: 写成矩阵形式则为: 三、实验内容1) 理解并掌握三次Bezier曲线。2) 根据三次Bezier曲线的参数方程绘制一条三次Bezier曲线,要求用C或C+编写源程序。3) 编译调试源程序,生成可执行文件。4) 运行程序,观察所得结果。5) 打印源程序或把源程序以文件的形式提交。实验四 B样条曲线的绘制一、实验目的对于曲线而言,最具实际意义的就是样条曲线。样条曲线是在生产实践的基础上产生和发展起来的。本实验要求根据所学知识,绘制一条三次B样条曲线,与Bezier曲线比较有何区别。通过本实验,使学生加深对B样条曲线及其性质的理解和掌握,提高绘制B样条曲线的程序设计能力。二、实验原理 样条基函数的定义及性质B样条曲线与贝齐尔曲线的主要区别在于它们的混合函数Ni,k(t)的不同。其中n为控制点个数减1,k为控制曲线连续性的阶。下图是n=5,k=3,4,5的B样条曲线。 由定义可知,B样条曲线主要由控制点位置、参数k以及所给定的节点值ti(i=0,1,n)(又称为节点向量)来决定。根据节点向量的不同,又可分为均匀B样条曲线和非均匀B样条曲线。一旦两节点值的距离是常数,所生成的曲线称为均匀B样条。均匀B样条有周期性混合函数。即,给定n和k值,所有混合函数有相同形状。每个后继混合函数仅仅是前面函数的一个移动结果:Ni,k(t)= Ni+1,k(t+t)=Ni+2,k(t+2t) 其中,t是相邻节点值间的区间。对非均匀B样条,可以选多个内节点值并且在节点值之间选不等的间距。非均匀B样条曲线在控制曲线形状方面提供了更多的便利。通过节点向量取不同的间距,我们可在不同的区间上得到不同的混合函数形状,以用来调整曲线形状;增加节点值多样性,可以在曲线中产生细微的震颤,甚至导致不连续性。B样条曲线的性质:1) 局部性。2) 连续性。3) 几何不变性。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论