计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构

计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构

ID:11592300

大小:1.19 MB

页数:75页

时间:2018-07-12

计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构_第1页
计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构_第2页
计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构_第3页
计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构_第4页
计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构_第5页
资源描述:

《计算机图形学(徐长青、许志闻)第六章 形体的表示以及数据结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章形体的表示以及数据结构第一节 分形图的递归算法本节主要介绍几种简单分形图的递归算法实现1.1 Cantor三分集Cantor三分集的构造如下图所示,一条线段ab被均分为三段,保留其两边的两段,中间一段去掉,然后把得到的每一段再继续进行划分,如此反复。 (1)创建应用程序框架,以单文档程序框架为基础,建立工程名称为cantor的单文档应用程序框架(2)添加视图类CCantorView的成员函数,voidcantor(CPointp0,CPointp1);(3)程序结构代码,在CCantorView.cpp文件中相应位置添加如下代码voi

2、dCCantorView::cantor(CPointp0,CPointp1){CClientDCpDC(this);intdis=20;//直线长度的精度,控制递归次数if((p1.x-p0.x)

3、3.y=p1.y+80;p0.y=p0.y+80;p1.y=p1.y+80;cantor(p0,p2);cantor(p3,p1);}}(4)为了把三分康托集显示出来,需要在OnDraw()函数中中调用cantor函数,代码如下:voidCCantorView::OnDraw(CDC*pDC){…….CPointp0,p1;p0.x=100;p0.y=50;p1.x=800;p1.y=50;cantor(p0,p1);}(5)程序执行结果1.2Koch曲线和Koch雪花(1)创建应用程序框架,以单文档程序框架为基础,建立工程名称为koch的

4、单文档应用程序框架(2)编辑菜单资源在工作区的[ResourceView]标签中,单击Memu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据下表添加编辑菜单资源。菜单标题菜单项标题标识符IDKOCHKoch曲线ID_KOCH_CURVEKoch雪花ID_KOCH_SNOW(3)添加消息处理函数利用ClasssWizard为应用程序添加与菜单项相关的消息处理函数,ClassName栏中选择CkochView,建立如下的消息映射函数。菜单项ID消息消息处理函数ID_KOCH_CURVECOMMANDOnKochCurveID_K

5、OCH_SNOWCOMMANDOnKochSnow(4)右键单击CkochView,选择AddMemberFunction,在弹出的对话框中,FunctionType设为void,FunctionDeclaration设为koch(CPointp0,CPointp1,intiter);单击确定。用同样的方法添加视图类CkochView的成员函数ClearScreen(),类型也为void(5)添加程序结构代码①在kochView.h中类定义之前定义一个存储点信息的如下结构的类,其中x,y设为double型主要为了计算的精度而考虑,保证在计算

6、过程中较小的误差。classCPOINT{public:Doublex,y;CPOINT(){}~CPOINT(){}};②在CantorView.cpp文件中相应位置添加如下代码voidCKochView::koch(CPointp0,CPointp1,intiter){CClientDCpDC(this);CPointr0,r1,r2;if(iter==1){pDC.MoveTo(p0.x,p0.y);pDC.LineTo(p1.x,p1.y);return;}if(iter>1){r0.x=p0.x+(p1.x-p0.x)/3;r0.

7、y=p0.y+(p1.y-p0.y)/3;r1.x=p0.x+2*(p1.x-p0.x)/3;r1.y=p0.y+2*(p1.y-p0.y)/3;r2.x=(r1.x-r0.x)/2-(r1.y-r0.y)*sqrt(3)/2+r0.x;r2.y=(r1.y-r0.y)/2+(r1.x-r0.x)*sqrt(3)/2+r0.y;koch(p0,r0,iter-1);koch(r1,p1,iter-1);koch(r0,r2,iter-1);koch(r2,r1,iter-1);}}voidCKochView::ClearScreen(){C

8、ClientDCdc(this);CRectwindow;GetClientRect(window);dc.SelectStockObject(WHITE_PEN);dc.Sel

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。