Java---分形与递归

利用Java的画图板,可以创造出很多有趣的图形,利用几组简单的公式和几个点便可以完成。是不是很简单呢?
分形的思想较为简单,只需要了解相应的函数便可以绘出(至于那些公式是怎么来的,是那些数学家们的事了)。
第一组公式:在这里插入图片描述
Java---分形与递归_第1张图片
Java---分形与递归_第2张图片
Java---分形与递归_第3张图片
Java---分形与递归_第4张图片
第二组公式:
Java---分形与递归_第5张图片
利用这一组公式,可以画出树和树叶的形状,只要向其中传递不同的参数就可以了。
Java---分形与递归_第6张图片
看到那颗弯弯的树叶了没有?画那片树叶要用到产生不同概率的随机数。
假设我们要产生的随机数为1,2,3;它们产生的概率分别为0.5,0.4,0.1;
我们首先产生1-10的随机数n,当n>5时,产生1;当1

何为递归?递归就是在本方法里面调用本方法。一个简单使用递归的例子就是求阶乘。Java---分形与递归_第7张图片
上面的图形就是用递归画出来的,源代码如下:

public void unique_5(int n,int x0,int y0,int dx,int dy,java.awt.Graphics g){
		if(n==0)
			return;
		((java.awt.Graphics) g).setColor(cl);
		int x1,y1,x2,y2;
		x1=x0+dx;
		x2=x0-dx;
		y1=y0+dy;
		y2=y0+dy;
		g.drawLine(x1, y1, x2, y2);
		g.drawLine(x0, y0, x2, y2);
		g.drawLine(x0, y0, x1, y1);

	g.drawLine((x0+x1)/2, (y0+y1)/2, (x0+x2)/2, (y0+y1)/2);
	g.drawLine((x0+x1)/2, (y0+y1)/2, (x1+x2)/2, y2);
	g.drawLine((x1+x2)/2, y2, (x0+x2)/2, (y0+y1)/2);
	System.out.println(n);
	unique_5(n-1,x0,y0,dx/2,dy/2,g);
	unique_5(n-1,(x0+x1)/2,(y0+y1)/2,dx/2,dy/2,g);
	unique_5(n-1,(x0+x2)/2,(y0+y2)/2,dx/2,dy/2,g);
}

你可能感兴趣的:(Java---分形与递归)