欢迎来到天天文库
浏览记录
ID:58223996
大小:654.00 KB
页数:12页
时间:2020-04-28
《计算机图形学实验报告实验2.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、贵州大学实验报告学院:计算机科学与信息专业:计算机科学与技术班级:计科101姓名喻志华学号1008060024实验组实验时间2013/3/30指导教师吴云成绩实验项目名称圆和椭圆的生成算法实验目的根据圆的Brensenham算法、中点算法和中点改进算法,以及椭圆的中点算法,编写程序,实现圆与椭圆的绘制。实验要求1.圆、椭圆的中点算法2.圆的优化后的算法:二次差分法3.编制源程序;4.对于一些较为重要的算法,可以摘抄在报告中;实验原理1.中点算法A.构造函数F(X,Y)=X2+Y2-R2,则可知F(M)<0:M在圆内,
2、取TF(M)≥0:M在圆外,取BB.第一个M点的值有:(一)DM0=F(M0)=F(1,R-0.5)=12+(R-0.5)2-R2=1.25-R若D=d-0.25则判别式d<0等价于D<-0.25。即DM0=1-R与DM0=1.25-R等价。(二)如果dM<0,表示下一中点M在圆内,选择T点,且:dMT=F(MT)=F(xp+2,yp-0.5)则:∆dMT=dMT-dM=2xp+3(三)如果dM>0,表示下一中点M在圆外,选择B点,且:dMB=F(xMB,yMB)=F(xp+2,yp-1.5)则:∆dMB=dMB-d
3、M=2xp-2yp+52.中点改进算法——增量算法设圆上某点I(xi,yi);则下一点为J点,坐标为(xi+1,yj)dT=2xp+3;dB=2(xp-yp)+5;d1=d2=0;因为x每次加1,所以dj点A.将增量∆dMT=2(xi+1)+3=dT+2=dT+d1;(d1=d1+2)B.将增量∆dMB=2(xi+1)-2yj+5=dB+d1+d2;dj较之于di,x部分增量增加相同的量,y部分两种情况1.取T点,yj不减1,y部分增量的增量无变化2.取B点,yj减1,y部分增量的增量加2.所以当y—时,d2=d2+
4、2因此,d<0,d=d+dT+d1;d>0,d=d+dB+d1+d2;3.Brensenham算法1.基本思想:当
5、D(Ti)
6、≥
7、D(Bi)
8、,则Bi更接近于圆周,选择Bi;当
9、D(Ti)
10、<
11、D(Bi)
12、,则Ti更接近于圆周,选择Ti;若令D=
13、D(Ti)
14、-
15、D(Bi)
16、则 D≥0,取Bi ;D<0,取Ti;2.三种情况A.设x0=0,y0=R;则T1为(1,R),B1为(1,R-1),d1=(12+R2-R2)+[(12+(R-1)2-R2]=3-2RB.若di<0,则取Ti作为下一点,即Pi(xi-1+
17、1,yi-1);d(i+1)=di+4xi-1+6C.若di≥0,则取Bi作为下一点,即Pi(xi-1+1,yi-1-1),d(i+1)=di+4(xi-1-yi-1)+104.椭圆的中点算法与圆同理,对于某中点MdM=F(M)=b2(x+1)2+a2(y-0.5)2-a2b2(1)若d=0,则M在椭圆弧上,取T/B点(2)若d<0,则M在椭圆弧内,应取T点(3)若d>0,则M在椭圆弧外,应取B点A.上半部分雷同圆的推导,得到结论:d1<0,d1=d1+b*b*(2*x+3);d1>=0,d1=d1+(b*b*(2*
18、x+3)+a*a*(-2*y+2))每次判断是否转入下部分:b*b*(x+1)=0,d2=d2+a*a*(-2*y+3)实验环境VisualC++6.0/WindowsXP实验步骤1.新建工程MFC2.插入两个对话框,绘制圆的命名为InputDlg,绘制椭圆的命名为InputDlg,且设置其各控件ID,
19、变量名如下:3.在fileview中,头文件HeyjieCircle1_1Bview.h和HeyjieCircle1_1Bview.cpp中添加代码。(1)HeyjieCircle1_1Bview.h中加入两个dialog的头文件,以及变量和函数的声明。(2)在HeyjieCircle1_1Bview.cpp中写入声明函数的函数体。……(4)打开Resource/Menu/IDR_MAINFRAM,进行菜单设计。如图(5)为每个菜单项添加菜单函数。为中点算法添加菜单函数:点击上图中EditCode可对该函数编辑.其他
20、几个函数如法炮制。(5)可对toolbar中图标进行修改。(6)调试运行。实验内容(1)画圆中点算法实现圆的绘制。(2)其改进算法画圆。(3)Brensenham画圆。(4)中点算法绘制椭圆。实验结果(1)圆中点算法结果(1)圆中点改进算法结果(1)Brensenham画圆结果(1)中点算法绘制椭圆结果通过实验我们知道,在实现功能的前提下,改进
此文档下载收益归作者所有