第七章 形体的表示以及数据结构.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 形体的表示以及数据结构 第一节 分形图的递归算法 本节主要介绍几种简单分形图的递归算法实现 1.1 Cantor集 Cantor三分集的构造如下图所示,一条线段ab被均分为三段,保留其两边的两段,中间一段去掉,然后把得到的每一段再继续进行划分,如此反复。 ?cantor的单文档应用程序框架; (2)添加视图类CCantorView的成员函数,void cantor(CPoint p0,CPoint p1); (3)程序结构代码,在CCantorView.cpp文件中相应位置添加如下代码 void CCantorView::cantor(CPoint p0,CPoint p1) { CClientDC pDC(this); int dis=20;//直线长度的精度,控制递归次数 if((p1.x-p0.x)dis) { pDC.MoveTo (p0.x,p0.y); pDC.LineTo (p1.x,p1.y); } else { CPoint p2,p3; pDC.MoveTo (p0.x,p0.y); pDC.LineTo (p1.x,p1.y); p2.x = p0.x + (p1.x - p0.x) / 3; p2.y = p0.y + 80; p3.x = p1.x - (p1.x - p0.x) / 3; p3.y = p1.y + 80; p0.y = p0.y + 80; p1.y = p1.y + 80; cantor(p0,p2); cantor(p3,p1); } } (4)为了把三分康托集显示出来,需要在OnDraw()函数中中调用cantor函数,代码如下: void CCantorView::OnDraw(CDC* pDC) { ……. CPoint p0,p1; p0.x=100;p0.y=50;p1.x=800;p1.y=50; cantor(p0,p1); } (5)程序执行结果 1.2 Koch曲线和Koch雪花 (1)创建应用程序框架,以单文档程序框架为基础,建立工程名称为koch的单文档应用程序框架 (2)编辑菜单资源 在工作区的[ResourceView]标签中,单击Memu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据下表添加编辑菜单资源。 菜单标题 菜单项标题 标识符ID KOCH Koch曲线 ID_KOCH_CURVE Koch雪花 ID_KOCH_SNOW (3)添加消息处理函数 利用ClasssWizard为应用程序添加与菜单项相关的消息处理函数,ClassName栏中选择 CkochView,建立如下的消息映射函数。 菜单项ID 消息 消息处理函数 ID_KOCH_CURVE COMMAND OnKochCurve ID_KOCH_SNOW COMMAND OnKochSnow (4) 右键单击CkochView,选择Add Member Function,在弹出的对话框中,Function Type设为void,Function Declaration设为koch(CPoint p0,CPoint p1,int iter);单击确定。用同样的方法添加视图类CkochView的成员函数ClearScreen(),类型也为void (5)添加程序结构代码 ①在kochView.h中类定义之前定义一个存储点信息的如下结构的类,其中x,y设为double型主要为了计算的精度而考虑,保证在计算过程中较小的误差。 class CPOINT {public: Double x,y; CPOINT() { } ~CPOINT() { } }; ②在CantorView.cpp文件中相应位置添加如下代码 void CKochView::koch(CPoint p0, CPoint p1, int iter) { CClientDC pDC(this); CPoint r0,r1,r2; if(iter==1) { pDC.MoveTo(p0.x,p0.y); pDC.LineTo(p1.x,p1.y); return; } if(iter1) { r0.x=p0.x+(p1.x-p0.x)/3; r0.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)

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档