- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分形算法及C实现
分形算法及C++实现
分形简介
我们人类生活的世界是一个极其复杂的世界,例如,喧闹的都市生活、变幻莫测的股市变化、复杂的生命现象、蜿蜒曲折的海岸线、坑坑洼洼的地面等等,都表现了客观世界特别丰富的现象。基于传统欧几里得几何学的各门自然科学总是把研究对象想象成一个个规则的形体,而我们生活的世界竟如此不规则和支离破碎,与欧几里得几何图形相比,拥有完全不同层次的复杂性。分形几何则提供了一种描述这种不规则复杂现象中的秩序和结构的新方法。
什么是分形几何?通俗一点说就是研究无限复杂但具有一定意义下的自相似图形和结构的几何学。什么是自相似呢?例如一棵苍天大树与它自身上的树枝及树枝上的枝杈,在形状上没什么大的区别,大树与树枝这种关系在几何形状上称之为自相似关系;我们再拿来一片树叶,仔细观察一下叶脉,它们也具备这种性质;动物也不例外,一头牛身体中的一个细胞中的基因记录着这头牛的全部生长信息;还有高山的表面,您无论怎样放大其局部,它都如此粗糙不平等等。这些例子在我们的身边到处可见。分形几何揭示了世界的本质,分形几何是真正描述大自然的几何学。
例如,首先画一个等边三角形,把边长为原来三角形边长的三分之一的小等边三角形选放在原来三角形的三条边上,由此得到一个六角星;再将这个六角星的每个角上的小等边三角形按上述同样方法变成一个小六角星……如此一直进行下去,就得到了雪花的形状。
2.分形中的迭代函数系统
?? 相似变换是指在各个方向上变换的比率必须相同的一种比例变换;仿射变换是指在不同的方向上变换的比率可以不同的一种比例变换。
?? 仿射变换的数学表达式为:
其中,a,b,c,d,e,f是仿射变换系数。
对于比较复杂的图形,可能需要多个不同的仿射变换来实现,而且,每个仿射变换被调用的概率不一定相同,所以引进一个参数概率p。a,b,c,d,e,f,p就构成了一个IFS码。
3.分形中计算机模拟算法
?? 递归算法。
?? 字符串替换算法。
?? 迭代函数系统算法。
? 逃逸时间算法。
4.使用迭代函数系统算法对一棵树的C++实现程序
fractal.h文件:
#ifndef _FRACTAL_H
#define _FRACTAL_H
#include cstdlib
#include ctime
class CFractal
{
private:
??? float m[7][7];
??? float a;
??? float b;
??? float c;
??? float d;
??? float e;
??? float f;
??? float x;
??? float y;
??? float newx;
??? float newy;
??? int n;
public:
??? CFractal();
??? virtual ~CFractal();
??? void ifs(CDC* pDC);
};
#endif
fractal.cpp文件:
#include stdafx.h
#include fractal.h
CFractal::CFractal()
{
牋?memset(m,0,49);
牋?m[0][0]=-0.04; m[0][1]=0; m[0][2]=-0.19; m[0][3]=-0.47; m[0][4]=-0.12; m [0][5]=0.3;m[0][6]=0.25;
牋?m[1][0]=0.65; m[1][1]=0; m[0][2]=0; m[1][3]=0.56; m[1][4]=0.06; m[1][5]=1.56;m[1][6]=0.25;
牋?m[2][0]=0.41; m[2][1]=0.46; m[2][2]=-0.39; m[2][3]=0.61; m[2][4]=0.46; m[2][5]=0.4;m[2][6]=0.25;
牋?m[3][0]=0.52; m[3][1]=-0.35; m[3][2]=0.25; m[3][3]=0.74; m[3][4]=-0.48; m[3][5]=0.38;m[3][6]=0.25;
牋?x=0;
牋?y=0;
牋?a=0;
牋?b=0;
牋?c=0;
牋?d=0;
牋?e=0;
牋?f=0;
牋?newx=0;
牋?newy=0;
牋?n=300000;
}
CFractal::~CFractal()
{
}
void CFractal::ifs(CDC* pDC)
{
牋?srand( (unsigned)time( NULL ) );
牋?f
文档评论(0)