《计算机图形学基础》实验讲义汇总_第1页
《计算机图形学基础》实验讲义汇总_第2页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

1、1计算机图形学基础实验讲义卢迪 王鹏 张开玉哈尔滨理工大学2电气与电子工程学院电子信息工程系3实验一直线的生成1.熟练掌握二维直线段的中点Brese nham算法的原理。2.掌握直线段中点Bresenham绘制算法的高级语言程序设计方法。实验内容根据课堂所学的直线段的中点Bresenham算法的原理应用高级语言设计二维直线段的生成子程序,并设计主程序。进行调试,得到正确的显示结果。要求每个同学的设计独立完 成,实验数据不同,绘制出的图形结果也不相同。三、实验用设备仪器及材料硬件设备:赛扬400或PentiumHI450以上的CPU处理器、64M以上的内存、200M以上的自由硬盘空间、支持24位

2、真彩色的显卡、彩色显示器。本实验使用的是性能优良的联想开天6000品牌机。软件环境:Windows XP操作系统、Turboc2集成开发环境。四、实验原理中点Bresenham绘制二维直线段的基本原理是每次在最大的位移方向上走一步,而另一个方向是走步还是不走步要取决于误差项的判别。直线的方程F(x, y)二 y - kx-b = 0 ,其中k= = -(1-1)Lx X1- x0该直线方程将平面分为三个区域:对于直线上的点,F(x,y)=0; 对于直线上方的点,F(x,y)0; 对于直线下方的点,F(x,y)0。实验目的4则有:误差项的递推:d0:y+1 (d0) y =斜(d0)d二F(Xj

3、2,y1.5)二y 1.5 k(Xj2) b二y 1.5 k(Xj1) b k=d Tk14,xi+2:yi+1.5)(Xi+1,/i+0.5? -)(xi:1 Xyi)图LT直线将平面井为三个区域基本原理:假定0kw 1,x是最大位移方向判别式:d 二 F(XMM)二 F(Xi1,yi0.5)“i0.5 k(Xj1)b (1-2)1k_Pn(xiJ Li1.Jr十-ftl(xi+lj yi1-1/2)i)p; (zi+l3yi)如图1-1所示。圏1-2 Bensemh刼算法注成直线的原理d0 0:d = F (Xj2, y0.5)二yi0.5 - k(Xi2) - b二yi0.5 - k(X

4、i1) - b - k=d _ k初始值 d d 的计算do= F(Xo1, yo0.5)二y0.5 - k(Xo1) - b=yo- kxo- b - k 0.5= 0.5 -k由于我们用的只是d的符号,用2dAX代替d来摆脱小数。d0=0.5-k变为d=AX-2yd0时,d=d-k变为d=d-2Ay0 0 k kw1 1 时 BresenhamBresenham 算法的算法步骤为:1输入直线的两端点P0(x0,y0)和P1(x1,y1)。2计算初始值X、y、d=d= x-2x-2 y y、X=X0、y=y0。3绘制点(x,y)。判断d的符号。若d=06d-2d-2Ay y。4当直线没有画完

5、时,重复步骤3。否则结束。五、实验方法及步骤1.设计二维直线段的生成子程序。2.设计主程序。3.编译、链接、调试程序,直至得到正确的显示结果。4.改变直线的起点和终点坐标,并改变直线的显示颜色, 观察不同的输入的不同显示结果。六、选作实验1.结合你所学过的数值微分算法绘制二维直线段的原理,设计直线段生成算法的子程序及 进行验证的主程序,并进行调试,得到正确的显示结果。2.结合你所学过的改进的中点Brese nham算法绘制二维直线段的原理,设计直线段生成算法的子程序及进行验证的主程序,并进行调试,得到正确的显示结果。以上两个选作实验供已完成基本实验项目的同学选作,也可作为同学课下练习的实验项目

6、。7学生本人签名教师对学生本次实验完成情况的成绩评定8实验二圆的生成一、实验目的1.熟练掌握八分法画圆和中点Brese nham算法生成圆弧的原理。2.掌握中点Bresenham算法生成圆弧的高级语言程序设计方法。二、实验内容根据课堂所学的中点Bresenham算法生成圆弧的原理应用高级语言设计圆弧的生成子程序,并设计主程序。进行调试,得到正确的显示结果。要求由键盘输入圆心坐标和圆的半 径,由程序生成圆形。三、实验用设备仪器及材料硬件设备:赛扬400或PentiumHI450以上的CPU处理器、64M以上的内存、200M以上的自由硬盘空间、支持24位真彩色的显卡、彩色显示器。本实验使用的是性能

7、优良的联想开天6000品牌机。软件环境:Windows XP操作系统、Turboc2集成开发环境。四、实验原理八分法画圆的思想:先绘制出第一象限上半部分的八分之一圆弧,再根据圆的对称性,绘制其余的七个对称部分,实现绘制一个完整的圆。中点Bresenham算法生成圆弧的基本原理:构造函数F(x,y)=x2-y2-R2。对于圆上的点,有F(x,y)=0;对于圆外的点,F(x,y)0;而对于圆内的点,F(x,y)0。算法原理:M的坐标为:M(xi +1,yi-0.5)IJ1Js y图图 2T2T中点中点 BrsEenhaniBrsEenhani 画圆的原理画圆的原理9当F(xM,yM)0时,取Pd(

8、xi +1,yi-1);当F(xM,yM)=O时,约定取Pd。构造判别式:d 二 F(XMr F(Xi1, yi-0.5) = (Xi1)2Wi - 0.5)2- R2(2 -1)当d=0时,下一点取Pd(xi +1,yi-1)。误差项的递推:d0:d =F(x +2$ 0.5)2 2 2= (Xi2)(yi-0.5) R(a) d=0的情况= (x1)2(yi-0.5)2-R22xi3=d +2x +35 5- yi -P-=0:d =F(Xi+21.5)yi-1- (3-11-=(人+2)2+(% 1.5)2 R2yi-2-4-= (Xi+1)2+(yi-0.5)2-R2+(2Xi+3)+

9、(-2yi+2)xixi+1xi+2(b) d0 的情况判别式的初始值:d。二F(1,R-0.5)=1 (R-0.5)2-R2= 1.25-R改进:用d-0.25代替d。算法步骤:1输入圆的半径R。P_ Ah_1-1JJyiyi-1yi-2xixi+1xi+2102计算初始值 d=1-Rd=1-R、x=0、y=R。3绘制点(x,y)及其在八分圆中的另外七个对称点。4判断d的符号。若 d0d0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x_y)+5,再将(x,y)更新为(x+1,y-1)。5当x0,取Pd(xi+1,yi-1)误差项的递推yiyi-1

10、d10:yi-2d1二F(Xi2y -0.5) =b2(Xi2)2a2(y 0.5) a2b2-b2(xi1) a2(yi-0.5)2-a2b2b2(2x 3)=d1b2(2xi3)xixi+1xi+2(a) d0:2 2 2 2 2 2d1二F(x2,yi-1.5) =b (x 2) a -1.5) -a b= b2(x1)2a2 -0.5)2-a2b2b2(2Xi3) a2(-2y2)=d1 b2(23) a2(-2y 2)判别式的初始值:dp = F (1, b - 0.5) = b2a2(b - 0.5)2- a2b2二b2a2(-b 0.25)再来推导椭圆弧下半部分的绘制公式:原理:

11、判别式:yi一P!_o-yi-2Xixi+1xi+2(a) d0,取PI(xi,yi-1)若d20,取Pr(xi+1,yi-1)7nG71L lfIe)Illi1图图 半部分椭圆弧的绘制原理半部分椭圆弧的绘制原理1415d2w0:d2二F(为1.5, yi-2) =b2(Xj1.5)2a2 - 2)2-a2b2二b2(xi0.5)2a2(yi-1) a2b2b2(2xi2) a22yi3)“2b2(2x2) a2(-2y3)注意:上半部分的终止判别下半部分误差项的初值算法步骤:1输入椭圆的长半轴a和短半轴bo2计算初始值d=b2+a2(-b+0.25)、x=0、y=b。3绘制点(x,y)及其在

12、四分象限上的另外三个对称点。4.判断d的符号。若d0,则先将d更新为d+b2(2x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b2(2x+3)+a2(-2y+2),再将(x,y)更新为(x+1,y-1)。5.当b2(x+1)0:d2二F(Xi0.5,yi-2) =b2(Xi0.5)2a2(yi-2)2-a2b2二b2(x0.5)2a2(yi-1)2-a2b2a2( - 2y:3)2=d2a ( - 2yi3)误差项的递推Pyi - o-yiyi-iyi-i - 0 的情况yi-1yi-2xi的情况(b) d0时,重复步骤7和&否则结束。五、实验方法及步骤1设计中点B

13、resenham算法生成椭圆的子程序。2设计主程序。3编译、链接、调试程序,直至得到正确的显示结果:一个椭圆。改变椭圆的长半轴和短半轴的大小,并改变椭圆的显示颜色,观察不同的输入的不同显示结果。六、选作实验1结合实验一和实验二学过的直线的生成算法和圆的生成算法的程序设计方法,在同一坐标系中同时显示一个圆和一个椭圆。以上选作实验供已完成基本实验项目的同学选作,也可作为同学课下练习的实验项目。学生本人签名教师对学生本次实验完成情况的成绩评定17实验四 直线段的编码裁减算法一、实验目的1.熟练掌握编码裁减算法。2.掌握直线段的编码裁减算法的高级语言程序设计方法。二、实验内容判断一条直线段与设定窗口之

14、间的相互位置关系, 保留窗口内的那部分图形, 去掉窗 口外的图形。三、实验用设备仪器及材料硬件设备:赛扬400或PentiumIII450以上的CPU处理器、64M以上的内存、200M以 上的自由硬盘空间、支持24位真彩色的显卡、彩色显示器。本实验使用的是性能优良 的联想开天6000品牌机。软件环境:Windows XP操作系统、Turboc2集成开发环境。四、实验原理基本思想:对每条直线段Pi(xi,yi)p2(X2,y2)分三种情况处理:(1)若点p1和p2完全在裁剪窗口内,直线段完全可见,简取之。(2)若点pi和P2均在窗口外,且满足下列四个条件之一:x1wxl且x2wxr且x2wxr

15、;y1wyb且y2wyt且y2wyt .直线段完全不可见, “简弃 ”之。(3)直线段既不满足 “简取”的条件, 也不满足 “简弃”的条件,需要对直线段按交点进行分段, 分段后重复上述处理。编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。编码规则如下:I4(1)若code1|code2=0,对直线段应简取之。若codel &code2丰0,对直线段可简弃之。(3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被 舍弃或者找到位于窗口内

16、的一段线段为止。求交:假定直线的端点坐标为(Xi,yi)和(X2,y2),k=(y2-yi)/(X2-xi)左、右边界交点的计算:y=y什k(x-xi),其中x置为wxl或wxr。上、下边界交点的计算:x=x什(y-yi)/k ,其中y置为wyb或wyt。算法的步骤:(I)输入直线段的两端点坐标:pi(xi,yi)、p2(X2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl禾口wxr。对pi、P2进行编码:点Pi的编码为codei,点P2的编码为code2。若codei|code2=0,对直线段应简取之,转(6);否则,若codei&code2丰0,对直线段可简 弃之,转 ;当

17、上述两条均不满足时,进行步骤。确保pi在窗口外部:若pi在窗口内,则交换pi和P2的坐标值和编码。(5)按左、右、下、上的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换pi的坐标值。也即在交点s处把线段一分为二,并去掉pis这一段。考虑到pi是窗口外的一点,因此可以去掉Pis。转(2)。(6)用直线扫描转换算法画出当前的直线段pip2。(7)算法结束。若xwxr,贝VD1=1,否则D1=0 ;若ywyt,则D3=1,否则D3=0。裁剪一条线段时,先求出端点Pi和p2的编1 01luDO1H10Q 010000阳口OHIO0101圈4-codei和code20100-1韻口垛区话然后:0

18、110码19五、实验方法及步骤1.设计编码裁减算法的子程序。2设计主程序。3.编译、链接、调试程序。改变被裁减直线段的端点坐标, 观察不同情况下直线段与裁减窗口的关系;改变窗口的位置,观察裁减的结果有何不同。六、选作实验1.给定三个顶点坐标,构成一个三角形。用给定的窗口对该三角形进行裁减。以上选作实验供已完成基本实验项目的同学选作,也可作为同学课下练习的实验项目。学生本人签名教师对学生本次实验完成情况的成绩评定20实验五AutoCAD2004绘制二维图形一、实验目的:1掌握AutoCAD中常用的两条二维绘图命令:直线LINE、圆CIRCLE;2.掌握常用的二维编辑命令:TRIM、OFFSET、ARRAY、ERASE、特性修改;3.通过绘制平面图形,熟悉二维平面图形的绘制方法和技巧,熟练掌握对象捕捉方法;4掌握图层、颜色、线宽和线型的设置方法。绘制以下图形、实验内容:21三、实验设备仪器及材料:联想开天6000品牌机、AutoCAD2

温馨提示

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

评论

0/150

提交评论