《2022年2022年计算机图形学 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机图形学 .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 页 共 24 页直线中点 Bresenham算法一、 实验内容给出坐标点,利用Bresenham将其绘画成一条直线。二、 绘图的函数void CTestView:Mbline() /Bresenham 函数void CTestView:OnMENUMbline(); /菜单函数三、程序设计说明及源代码: 1、绘制直线的算法1)、Bresenham 函数 (直线的扫描转换就是在屏幕像素点阵中用指定颜色点亮最佳趋近于理想直线的像素点集的过程,最著名的的Bresenham 算法就是其中之一。Bresenham算法原理:每次在主位移方向上走一步,另一个方向上走不走取决于重点偏差判别式的值。本程
2、序以 X 方向作为主位移方向)void CTestView:Mbline() /Bresenham 函数 CClientDC dc(this); /使用这种方式的菜单调用方式在VC+ 客户区绘制图形COLORREF rgb=RGB(0,0,255);/ /定义直线颜色蓝色,分别设置R,G,B 参数值,改变线条颜色double x,y,d,k; /d=F(Xm,ym)=F(Xi+1,yi+0.5)=yi+0.5-k(Xi+1)-b构造中点判别式x=x0;y=y0;k=(y1-y0)/(x1-x0)/起点及函数的斜率计算公式for(x=x0;x=x1;x+) Sleep(20);/延时函数,每20
3、 毫秒画出一个像素点dc.SetPixel(ROUND(x),ROUND(y),rgb);/设置像素点的坐标及颜色if(d0) /(中点在直线上方) y-; d+=1-k; Else /(中点在直线上)d-=k; 2)、 void CTestView:OnMENUMbline() /菜单函数 InputDlg dlg; if(dlg.DoModal()=IDOK) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - 第 2 页 共
4、 24 页x0=dlg.m_x0; y0=dlg.m_y0; x1=dlg.m_x1; y1=dlg.m_y1; AfxGetMainWnd()-SetWindowText(案例 2:直线中点Bresenham 算法 );(线运行出来后边框显示见图)RedrawWindow(); Mbline(); 四、 截图五、 实验总结:直线, 圆和椭圆是图形设计的最基本图形。通过本次实验, 我们了解了Bresenham函数,在以后利用Bresenham 函数设计那些基本图形。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
5、 - - - - - - 第 2 页,共 24 页 - - - - - - - - - 第 3 页 共 24 页AET 多边形有效边表填充算法一、 实验内容自己给出7 个顶点(扩充后可以自己增加顶点和删除顶点),利用绘制多边形程序作出多边形,再利用AET 函数对图形进行填充。并全面掌握ET 函数。二、关于绘制图形的函数 :void CTestView:CreatBucket() /建立桶结点void CTestView:Et() /构造边表void CTestView:AddEdge(AET *NewEdge)/插入临时边表void CTestView:EdgeOrder() /对边表进行排序
6、void CTestView:PolygonFill()/多边形填充void LineFill(); /用扫描线算法填充多边形三、程序设计说明及部分源代码: CTestView:CTestView() / TODO: add construction code here/ 设置多边形的5 个顶点Point0=CPoint(300,175); /P0 顶点数组的定义位于TestView.h 头文件中Point1=CPoint(250,300); /P1Point2=CPoint(100,300); /P2 Point3=CPoint(225,385); /P3 Point4=CPoint(150
7、,550); /P4Point5=CPoint(300,450); /P5Point6=CPoint(450,550); /P6Point7=CPoint(375,385); /P7 Point8=CPoint(500,300); /P8 Point9=CPoint(350,300); /P9/Point7=CPoint(900,450); /P7 增加节点需要增加顶点显示的个数,闭合多边形定点数相关数据在TestView.h 头文件中 (number,point )更改修改线条定点与显示定点必须对应 void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc
8、 = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here pDC-Polygon(Point,10); /绘制多边形绘制多边形的函数point 表面多边形顶点数组中每一个定点对是一个point 结构,有十个顶点/输出多边形的顶点编号pDC-TextOut(290,160,P0); /文本输出函数, (X,y 坐标)加上Cstring 对象pDC-TextOut(235,280,P1); pDC-TextOut(80,295,P2); pDC-TextOut(200,380,P3); 名师资料
9、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - - 第 4 页 共 24 页pDC-TextOut(140,555,P4); pDC-TextOut(295,460,P5); pDC-TextOut(450,550,P6); pDC-TextOut(385,385,P7); pDC-TextOut(500,300,P8); pDC-TextOut(350,280,P9); void CTestView:CreatBucket()/ /建立
10、桶结点/桶的数据结构定义在Bucket.h 头文件中CreatBucket()建立桶节点桶在TestView.h 头文件中 int ScanMin,ScanMax; /确定扫描线的最小值和最大值扫描线的开始扫描位置与结束扫描位置ScanMax=ScanMin=Point0.y; for(int i=1;iNumber;i+) if(Pointi.yScanMax) ScanMax=Pointi.y; /问题 4:扫描线的最大值 for(i=ScanMin;iScanLine=ScanMin; /扫描线定义在桶的数据结构中CurrentB-p=NULL;/没有连接边链表( *p 桶上的边表指针)
11、CurrentB-next=NULL; else/建立桶的其它结点 CurrentB-next=new Bucket; /新建一个桶结点CurrentB=CurrentB-next; /使 CurrentB 指向新建的桶结点CurrentB-ScanLine=i; CurrentB-p=NULL; /没有连接边链表CurrentB-next=NULL; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - 第 5 页 共 24 页
12、void CTestView:Et() /构造边表有效边表的数据结构定义在AET.h 中 /问题 6:全面掌握Et 函数for(int i=0;iPointi.y)/终点比起点高 while(CurrentB-ScanLine!=Pointi.y)/在桶内寻找该边的yMin CurrentB=CurrentB-next; /移到下一个桶结点 Ei.x=Pointi.x;/计 算AET表 的 值有 效 边 表 节 点 相 关 的 都 定 义 在TestView.h 头文件中Ei.yMax=Pointj.y; Ei.k=double(Pointj.x-Pointi.x)/(Pointj.y-Poi
13、nti.y);/代表 1/kEi.next=NULL; /有效边表的的建立需要三个参数,x,ymax 以及 1/k. CurrentE=CurrentB-p; /获得桶上链接边表的地址if(CurrentB-p=NULL)/当前桶结点上没有链接边结点 CurrentE=&Ei; /赋边的起始地址CurrentB-p=CurrentE;/ /第一个边结点直接连接到对应的桶中 else while(CurrentE-next!=NULL)/如果当前边已连有边结点 CurrentE=CurrentE-next; /移动指针到当前边的最后一个边节点 CurrentE-next=&Ei;/把当前边接上去
14、 if(Pointj.yScanLine!=Pointj.y) CurrentB=CurrentB-next; Ei.x=Pointj.x; Ei.yMax=Pointi.y; Ei.k=double(Pointi.x-Pointj.x)/(Pointi.y-Pointj.y); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - 第 6 页 共 24 页Ei.next=NULL; CurrentE=CurrentB-p; if(
15、CurrentE=NULL) CurrentE=&Ei; CurrentB-p=CurrentE; else while(CurrentE-next!=NULL) CurrentE=CurrentE-next; CurrentE-next=&Ei; CurrentB=NULL; CurrentE=NULL; void CTestView:AddEdge(AET *NewEdge)/插入临时边表 T1=HeadE; if(T1=NULL)/边表为空 ,将边表置为TempEdge T1=NewEdge; HeadE=T1; else while(T1-next!=NULL)/边表不为空 ,将 Te
16、mpEdge 连在该边之后 T1=T1-next; T1-next=NewEdge; void CTestView:EdgeOrder()/ /对边表进行排序 T1=HeadE; if(T1=NULL) return; if(T1-next=NULL)/如果该边表没有再连边表 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 24 页 - - - - - - - - - 第 7 页 共 24 页return;/桶结点只有一条边,不需要排序 else if(T1-next-x
17、x)/边表按 x 值排序 T2=T1-next; T1-next=T2-next; T2-next=T1; HeadE=T2; T2=HeadE; T1=HeadE-next; while(T1-next!=NULL)/继续两两比较相连的边表的x 值,进行排序 if(T1-next-xx) T2-next=T1-next; T1-next=T1-next-next; T2-next-next=T1; T2=T2-next; else T2=T1; T1=T1-next; void CTestView:PolygonFill()/多边形填充 HeadE=NULL; for(CurrentB=He
18、adB;CurrentB!=NULL;CurrentB=CurrentB-next)/访问所有桶结点 for(CurrentE=CurrentB-p;CurrentE!=NULL;CurrentE=CurrentE-next)/访问桶中排序前的边结点 AET *TempEdge=new AET; TempEdge-x=CurrentE-x; TempEdge-yMax=CurrentE-yMax; TempEdge-k=CurrentE-k; TempEdge-next=NULL; AddEdge(TempEdge); /将该边插入临时Aet 表 EdgeOrder();/使得边表按照x 递增
19、的顺序存放T1=HeadE;/根据 ymax 抛弃扫描完的边结点if(T1=NULL) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - 第 8 页 共 24 页return; while(CurrentB-ScanLine=T1-yMax)/放弃该结点,Aet 表指针后移(下闭上开) T1=T1-next; HeadE=T1; if(HeadE=NULL) return; if(T1-next!=NULL) T2=T1; T1
20、=T2-next; while(T1!=NULL) if(CurrentB-ScanLine=T1-yMax)/跳过一个结点 T2-next=T1-next; T1-next=NULL; T1=T2-next; else T2=T1; T1=T2-next; BOOL In=false; /设置一个BOOL 变量 In,初始值为假double xb,xe;/扫描线的起点和终点for(T1=HeadE;T1!=NULL;T1=T1-next)/填充扫描线和多边形相交的区间 if(In=false) xb=T1-x; In=true;/每访问一个结点,把 In 值取反一次 else/如果 In 值
21、为真,则填充从当前结点的x 值开始到下一结点的x 值结束的区间 xe=T1-x-1; /左闭右开CClientDC dc(this); for(double x=xb;xScanLine,GetColor);/填充语句名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - 第 9 页 共 24 页/GetColor 用来获取自己选择的颜色,如果改成RGB(255,0,0)或者其他数字组合,则自己选择的颜色无效,自动按设定的颜色填充fo
22、r(x=(xe+xb)/2;xScanLine,RGB(0,255,0);/填充语句Sleep(1);/延时 1ms,提高填充过程的可视性In=FALSE; for(T1=HeadE;T1!=NULL;T1=T1-next)/边连贯性 T1-x=T1-x+T1-k;/x=x+1/k delete HeadB; delete CurrentB; delete CurrentE; delete HeadE; /删除各种头结点 四、截图:未添加顶点之前(图2-1) :2-1 2-2 添加节点之后: (节点连线之间有交点,填充后的效果2-2)添加节点之后: (节点连线之间无交点,填充后的效果2-3)名
23、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - 第 10 页 共 24 页2-3 2-4 添加节点之后: (填充双色(设置默认红色和手动设置颜色)后的效果2-4)2-4 五、实验总结:本次实验使我了解了AET 多边形有效边表填充算法,在按照老师给出的算法加以验证之后,我又通过自己的深层次理解,对AET 多边形有效边表填充进行了更进一步的扩充。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
24、 - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - - - - - - - 第 11 页 共 24 页直线距离加权反走样算法一、实验内容:给出两个点利用Bresenham 算法画出一条线, 在根据直线距离加权走反样算法画出另外一条线。二、关于绘制图形的函数 :void CTestView:Mbline() /中点算法绘制直线void CTestView:AntiDisline()/距离加权反走样直线RedrawWindow() 清屏Mbline() ;/走样直线AntiDisline(); /反走样直线三、程序设计说明及源代码: 直线距离
25、加权走样算法原理:根据像素和理想直线的距离对像素的灰度进行调节。void CTestView:Mbline() /走样直线 CClientDC dc(this); COLORREF rgb=RGB(255,0,0); /定义直线颜色double x,y,d,k; x=x0;y=y0;k=(y1-y0)/(x1-x0); d=0.5-k; for(x=x0;x=x1;x+) dc.SetPixel(ROUND(x),ROUND(y),rgb); if(d0) y+; d+=1-k; Else d-=k; dc.TextOut(10,20, 走样直线 );/在固定坐标处输出文字 void CTes
26、tView:AntiDisline()/距离加权反走样直线 CClientDC dc(this); double x,y,d,k; k=(y1-y0)/(x1-x0); d=0;x=x0+30;y=y0+30; /两条直线之间的距离为30 个像素COLORREF rgb1=RGB(255,0,0),rgb2=RGB(0,0,0); for(x=x0;x1.0) y+; d-; dc.TextOut(0,100, 反走样直线 );/在固定坐标处输出文字 void CTestView:OnMENUAntiliasing()/菜单函数 / TODO: Add your command handler
27、 code here InputDlg dlg; if(dlg.DoModal()=IDOK) x0=dlg.m_x0; y0=dlg.m_y0; x1=dlg.m_x1; y1=dlg.m_y1; AfxGetMainWnd()-SetWindowText(案例 5:直线距离加权反走样算法); RedrawWindow(); /清屏Mbline(); /走样直线AntiDisline() ;/反走样直线 四、截图五、实验总结:通过本次实验的主要学习目标是直线距离加权走样算法,在学习此次算法的过程中,我们又一次的温习了Bresenham 算法,为以后的图形设计做好了充足的准备。名师资料总结 -
28、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - 第 13 页 共 24 页二维基本几何变换算一、 实验内容:根据需要选定一条直线或正三角形或者矩形,对其进行平移、缩放、旋转 .操作。达到理想要求。二、关于绘制图形的函数 :#include math.h /数学头文件#include Picdlg.h /图形输入对话框void CTestView:GetMaxX() /获得屏幕宽度void CTestView:GetMaxY() /获得屏幕高
29、度void CTestView:ClearMatrix(double A33)/清除变换矩阵void CTestView:Draw(double D3,int n)/绘制原始图形void CTestView:Calculate(double P03,double T3)/两个矩阵相乘三、程序设计说明及源代码: 二维图形基本几何变换:相对于坐标原点和坐标轴进行平移、比例、旋转、反射和错切这 5 种变换。二维坐标点的基本几何变换可以表示为p =p*t 的形式,其中p( x,y)为变换前的规范化其次坐标点,p (x ,y )为变换后的规范化其次坐标点,T 为 3*3 的变换矩形。void CTest
30、View:GetMaxX() /获得屏幕宽度 CRect Rect; GetClientRect(&Rect); MaxX=Rect.right; void CTestView:GetMaxY() /获得屏幕高度 CRect Rect; GetClientRect(&Rect); MaxY=Rect.bottom; void CTestView:ClearMatrix(double A33)/清除变换矩阵 for(int i=0;i3;i+) for(int j=0;j3;j+) Aij=0; void CTestView:OnMENUChoose()/菜单函数 / TODO: Add you
31、r command handler code here Picdlg dlg; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 24 页 - - - - - - - - - 第 14 页 共 24 页if(dlg.DoModal()=IDOK) if(dlg.m_Square=TRUE)/ 绘制矩形 P00=-dlg.m_Slength/2;P01=dlg.m_Swidth/2;P02=1; P10=dlg.m_Slength/2;P11=dlg.m_Swidth/2;
32、P12=1; P20=dlg.m_Slength/2;P21=-dlg.m_Swidth/2;P22=1; P30=-dlg.m_Slength/2;P31=-dlg.m_Swidth/2;P32=1; ntype=4; KeepOriginalMatrix(P,OSquare); Draw(P,ntype); if(dlg.m_Triangle=TRUE)/绘制等边三角形 P00=-dlg.m_Tlength/2;P01=0;P02=1; P10=dlg.m_Tlength/2;P11=0;P12=1; P20=0;P21=dlg.m_Tlength/2*tan(60*PI/180);P22
33、=1; P30=0;P31=0;P32=1; ntype=3; KeepOriginalMatrix(P,OTriangle); Draw(P,ntype); if(dlg.m_Line=TRUE)/绘制直线 P00=-dlg.m_Llength/2;P01=0;P02=1; P10=dlg.m_Llength/2;P11=0;P12=1; P20=0;P21=0;P22=1; P30=0;P31=0;P32=1; ntype=2; KeepOriginalMatrix(P,OLine); Draw(P,ntype); InvalidateRect(NULL,FALSE);/重画窗口 void
34、 CTestView:Draw(double D3,int n)/绘制原始图形 RedrawWindow(); CClientDC dc(this); CPen pen,*pOldpen; pen.CreatePen(PS_SOLID,3,RGB(0,255,0); pOldpen=dc.SelectObject(&pen); for(int i=0;in;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - 第 15 页
35、 共 24 页if(i=0) dc.MoveTo(ROUND(MaxX/2+Di0),ROUND(MaxY/2-Di1); else dc.LineTo(ROUND(MaxX/2+Di0),ROUND(MaxY/2-Di1); dc.LineTo(ROUND(MaxX/2+D00),ROUND(MaxY/2-D01); dc.SelectObject(pOldpen); pen.DeleteObject(); void CTestView:Calculate(double P03,double T3)/两个矩阵相乘 double Ptemp43; KeepOriginalMatrix(P,Pt
36、emp); for(int i=0;i4;i+) for(int j=0;jSetWindowText(案例 9); Draw(P,ntype); void CTestView:Tmove(double Tx,double Ty)/平移变换矩阵 ClearMatrix(TM); RedrawWindow(); TM00=1; TM11=1; TM20=Tx; TM21=Ty; TM22=1; Calculate(P,TM); AfxGetMainWnd()-SetWindowText(案例 9:二维基本几何变换平移变换); Draw(P,ntype); void CTestView:Tscal
37、e(double Sx,double Sy) /比例变换矩阵 ClearMatrix(TS); RedrawWindow(); TS00=Sx; TS11=Sy; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 24 页 - - - - - - - - - 第 18 页 共 24 页TS22=1; Calculate(P,TS); AfxGetMainWnd()-SetWindowText(案例 9:二维基本几何变换比例变换); Draw(P,ntype); void
38、CTestView:Trotate(double thta) /旋转变换矩阵 ClearMatrix(TR); RedrawWindow(); TR00=cos(thta*PI/180); TR01=sin(thta*PI/180); TR10=-sin(thta*PI/180); TR11=cos(thta*PI/180); TR22=1; Calculate(P,TR); AfxGetMainWnd()-SetWindowText(案例 9:二维基本几何变换旋转变换); Draw(P,ntype); void CTestView:Treflect(double Fx,double Fy)/
39、反射变换矩阵 ClearMatrix(TF); RedrawWindow(); TF00=Fx; TF11=Fy; TF22=1; Calculate(P,TF); AfxGetMainWnd()-SetWindowText(案例 9:二维基本几何变换反射变换); Draw(P,ntype); void CTestView:Treform(double b,double c)/错切变换矩阵 ClearMatrix(TC); RedrawWindow(); TC00=1; TC01=b; TC10=c; TC11=1; TC22=1; Calculate(P,TC); AfxGetMainWnd
40、()-SetWindowText(案例 9:二维基本几何变换错切变换); Draw(P,ntype); void CTestView:KeepOriginalMatrix(double Orig3,double Dest3)/保留矩阵 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 24 页 - - - - - - - - - 第 19 页 共 24 页int i,j; for(i=0;i4;i+) for(j=0;jSetWindowText(案例 18:Bezier
41、 曲线 );/显示标题MessageBox(单击左键绘制控制多边形,单击右键绘制曲线, 提示 ,MB_OK); pt=new CPointN_MAX_POINT; Flag=true;CtrlPoint=0; void CTestView:DrawBezier() /绘制 Bezier 曲线 CClientDC dc(this); double x,y; int rate=800,n; n=CtrlPoint-1; for(double t=0;t=1;t+=1.0/rate) x=0;y=0; for(int i=0;i=n;i+) x+=pti.x*Cnk(n,i)*pow(t,i)*po
42、w(1-t,n-i); y+=pti.y*Cnk(n,i)*pow(t,i)*pow(1-t,n-i); dc.SetPixel(ROUND(x),ROUND(y),RGB(0,255,0);/曲线颜色 double CTestView:Cnk(const int &n, const int &i)/Bernstein 第一项名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 24 页 - - - - - - - - - 第 21 页 共 24 页 return doubl
43、e(Factorial(n)/(Factorial(i)*Factorial(n-i); int CTestView:Factorial(int m)/阶乘函数 int f=1; for(int i=1;i=m;i+) f*=i; return f; void CTestView:DrawCharPolygon() /绘制控制多边形 CClientDC dc(this); CPen MyPen,*pOldPen; MyPen.CreatePen(PS_SOLID,3,RGB(255,0,0); /控制多边形pOldPen=dc.SelectObject(&MyPen); for(int i=0
44、;iCtrlPoint;i+) if(i=0) dc.MoveTo(pti); dc.Ellipse(pti.x-2,pti.y-2,pti.x+2,pti.y+2); else dc.LineTo(pti); dc.Ellipse(pti.x-2,pti.y-2,pti.x+2,pti.y+2); dc.SelectObject(pOldPen); MyPen.DeleteObject(); void CTestView:OnLButtonDown(UINT nFlags, CPoint point)/获得屏幕控制点坐标 / TODO: Add your message handler co
45、de here and/or call default CView:OnLButtonDown(nFlags, point); if(Flag) ptCtrlPoint.x=point.x; ptCtrlPoint.y=point.y; if(CtrlPointN_MAX_POINT) CtrlPoint+; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 24 页 - - - - - - - - - 第 22 页 共 24 页Flag=false; Draw
46、CharPolygon(); void CTestView:OnRButtonDown(UINT nFlags, CPoint point)/调用绘制函数 / TODO: Add your message handler code here and/or call default Flag=false; DrawBezier(); CView:OnRButtonDown(nFlags, point); 四、截图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 24 页 -
47、 - - - - - - - - 第 23 页 共 24 页五、 实验总结:本次实验的学对象是Bezier 曲线,通过设置点,由点连到线,再通过首尾连接形成曲线。适合于已知曲线上的某些点而生存曲线的情形。通过亲自验证效果使得我有了更加浓厚的兴趣去进一步了解Bezier 曲线。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 24 页 - - - - - - - - - 第 24 页 共 24 页指导教师批阅意见:成绩评定:指导教师签字:年月日备注:注: 1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后10 日内。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 24 页 - - - - - - - - -