递归出来的美丽分形世界

本文深入探讨分形艺术,展示了如何利用分形原理揭示自然界中的数学规律,从简单的基本样板出发,通过递归迭代生成令人惊叹的图案。以谢宾斯基三角、毕达哥拉斯树和科赫曲线为例,阐述了分形艺术如何在几何形状与现实生活之间架起桥梁,激发读者对数学美的无限想象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  自从认识分形,发现世界上任何美丽的事物都可以用分形来展示出来,小到街边的花花草草、大到地球的各个板块,海岸线还有活泼可爱的小动物造型,人眼的世界里有规律的物体总是那么美妙,基本样板通过递归出来的图案不仅呈现出规律的图片,而且与现实万物总有惊人的相似性,话不多说,有图才有真相:

谢宾斯基三角:给群山穿上美丽的衣裳

 

 

毕达哥拉斯树:爱情电影中都有那么一种场景,一望无际的草地中央坐落着一棵参天古树,树下的男女主角背靠着古树,祈祷一辈子的幸福



 

今天的重点:科赫曲线

基本样板:

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次迭代图,而我们可以改变“+”“-”所旋转角度,从而得到自由旋转的曲线,不多说,上图:

是不是很像细胞:



 

乌龟么?



 这是向日葵!



   不仅仅这些,改变角度还有很多很多的图案,自己去尝试尝试。。。

    我们还可以定义很多简单的样板和规律,比如树杈的递归,三叉递归出一棵枝叶茂密的大树等等等等,发挥你的想象,展现在你眼前的必然是一个美丽的分形世界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值