自从认识分形,发现世界上任何美丽的事物都可以用分形来展示出来,小到街边的花花草草、大到地球的各个板块,海岸线还有活泼可爱的小动物造型,人眼的世界里有规律的物体总是那么美妙,基本样板通过递归出来的图案不仅呈现出规律的图片,而且与现实万物总有惊人的相似性,话不多说,有图才有真相:
谢宾斯基三角:给群山穿上美丽的衣裳
毕达哥拉斯树:爱情电影中都有那么一种场景,一望无际的草地中央坐落着一棵参天古树,树下的男女主角背靠着古树,祈祷一辈子的幸福
今天的重点:科赫曲线
基本样板:
1次迭代
2次迭代:
细心的你也许可以从上面看出规律了,下面是主要代码实现:
/** * 字符串递归得到一个新字符串 * @param s 原字符串 * @param DGs 递归原则字符串 * @return */ public String DG(String s,String DGs){ String newString; if(count==0){ return s; } if(s==""){ newString = "F"; // System.out.println("newString: "+newString); } else{ char[] ch=s.toCharArray(); char[] DGch=DGs.toCharArray(); // System.out.println("ch的个数:"+ch.length); // System.out.println("DGch的个数:"+DGch.length); int countF=0; int countOthers=0; //统计字符串的f和+-的个数 for(int i=0;i<ch.length;i++){ if(ch[i]=='F'){ countF++; } else{ countOthers++; } } // System.out.println("F的个数:"+countF); // System.out.println("+-的个数:"+countOthers); //生成新字符数组 char[] newCh=new char[DGch.length*countF+countOthers]; // System.out.println("新数组长度:"+(DGch.length*countF+countOthers)); int nPos=0; for(int i=0;i<ch.length;i++){ if(ch[i]=='F'){ //将递归字符串放到新串中 for(int j=0;j<DGch.length;j++){ newCh[nPos]=DGch[j]; nPos++; } } else{ newCh[nPos]=ch[i]; nPos++; } } // System.out.println("nPos的大小:"+nPos); //将数组转换成字符串返回 newString = new String(newCh); } // System.out.println("newString: "+newString); count--; newString=DG(newString,DGs); return newString; }
原字符串代表初始字符串,可以是空,然后是递归原则字符就是“F”->"F-F++F-F",然后依次用这个原则递归不同代数就可以得到新生代字符串,在自己定义每个字符的意义,比如科赫曲线意义:F代表向前画一根线,“-”代表逆时针旋转60度,“+”代表顺时针旋转120度,所以“F”就是上面1次迭代图,“F-F++F-F”是上面的2次迭代图,而我们可以改变“+”“-”所旋转角度,从而得到自由旋转的曲线,不多说,上图:
是不是很像细胞:
乌龟么?
这是向日葵!
不仅仅这些,改变角度还有很多很多的图案,自己去尝试尝试。。。
我们还可以定义很多简单的样板和规律,比如树杈的递归,三叉递归出一棵枝叶茂密的大树等等等等,发挥你的想象,展现在你眼前的必然是一个美丽的分形世界。
相关推荐
扣氏曲线(Koch Curve)是一种典型的分形,通过迭代和递归可以生成越来越复杂且美丽的曲线。 3. **扣氏曲线**:扣氏曲线是1904年由瑞典数学家尼尔斯·赫尔曼·冯·科赫提出的一种几何曲线。其生成过程是将一条直线...
在这个名为“turtle-递归美学-分形树-draw_branch.rar”的压缩包中,我们找到了一个名为`draw_branch.py`的文件,它展示了如何利用递归技术来创建美丽的分形树。分形是一种具有自相似性的几何形状,即无论在大尺度...
本项目标题“通过递归实现分形图形绘制”旨在教给初学者如何利用递归方法创建出美丽的分形图形。在VS2015环境下,你可以通过这个项目学习到如何设置和编译C++项目,并了解递归在实际编程中的应用。 首先,我们需要...
在计算机图形学中,这种算法可以用来生成复杂的图形,并且随着迭代次数增加,细节会越来越丰富,形成美丽的分形图案。这些分形不仅在理论上引人入胜,也常被用于艺术创作和视觉设计中,展示了数学与美学的完美结合。
**正文** 分形,一种在自然界中广泛存在的几何形态,具有自相似性和无穷复杂性,是数学、计算机科学和艺术的交汇点。...这个入门程序不仅适合初学者,也对有一定编程基础的人提供了一个有趣的探索分形世界的机会。
总的来说,通过OpenGL和递归,我们可以生动地展现雪花分形的美丽和复杂性,不仅展示了数学的美妙,也提供了对计算机图形学深入理解的机会。学习并实现这样的项目有助于提升对OpenGL、分形理论以及递归编程的理解,...
总的来说,通过Matlab绘制分形图不仅能够展示数学的美丽,也能够帮助我们理解分形理论的基本概念,如自相似性、迭代和无限细节。这不仅在数学和计算机科学中有应用,还在物理学、生物学、地理学等多个领域有着广泛的...
在本项目"OpenGL分形树"中,我们利用OpenGL库和递归算法在Microsoft Visual C++ (VC++)环境中生成了美丽的分形树图形。下面我们将深入探讨这两个核心概念。 首先,OpenGL是一个跨语言、跨平台的编程接口,用于生成...
通过研究这些源代码,我们可以学习到计算机图形学中的基本算法、数据结构和优化技巧,同时还能了解分形几何的美丽和深度。这不仅有助于提升编程技能,还能让我们更深刻地理解自然界中复杂形状的数学本质。无论是对于...
在计算机科学领域,分形图形是一种具有自相似性质的几何形态,它们在不同尺度上重复出现,展现出惊人的复杂性和美丽。本主题聚焦于利用递归算法来实现这些分形图形,尤其是科赫雪花,这是一种经典的分形示例。递归是...
在编程世界中,分形是一种具有自相似性的几何形状,它们在不同尺度上呈现...通过学习和分析这些源代码,开发者可以了解到如何利用递归算法在C++环境中生成美丽的分形图形,这有助于深入理解分形几何和递归编程的概念。
在计算机图形学领域,递归是一种强大的工具,可以...它不仅展示了递归的强大功能,还能帮助我们理解分形的美丽和复杂性。通过不断地学习和实践,我们可以创造出更多独特的递归图形,进一步探索计算机图形学的奇妙世界。
分形树是一种在计算机图形学中常见的几何形态,它展示了自然界中许多复杂结构的自相似性。这种结构可以通过数学公式和...通过这个项目,不仅可以学习到分形艺术的美丽,还能深入理解C语言和计算机图形学的基础知识。
在Java中,通过利用Java AWT(Abstract Window Toolkit)或Swing库,可以创建出交互式的图形界面来展示这些美丽的分形图案。 在描述中提到,这个源码可能有一定的复杂性,暗示可能涉及到递归算法和复杂的图形计算。...
5. **递归绘制**:为了形成分形,我们需要对每个“F”字符进行递归处理。这意味着在绘制当前线段后,将按照一定比例缩小并重复整个过程,直到达到预设的迭代次数或者线段长度达到最小值。 6. **用户交互**:为了...
**分形**是一种在自然界中广泛存在的几何形态,它们具有自相似性,即在不同尺度上呈现出相似的结构。...在"fun-fractals-main"这个项目中,你将有机会亲自动手实践这些概念,探索更多关于分形和递归的奇妙世界。
总的来说,《易语言画分形图案简化版》是一个寓教于乐的编程项目,它不仅展示了分形图案的美丽,还提供了一个学习易语言图形编程的实践平台。对于想要掌握易语言或对分形艺术感兴趣的开发者来说,这是一个不可多得的...