利用Java的画图板,可以创造出很多有趣的图形,利用几组简单的公式和几个点便可以完成。是不是很简单呢?
分形的思想较为简单,只需要了解相应的函数便可以绘出(至于那些公式是怎么来的,是那些数学家们的事了)。
第一组公式:
第二组公式:
利用这一组公式,可以画出树和树叶的形状,只要向其中传递不同的参数就可以了。
看到那颗弯弯的树叶了没有?画那片树叶要用到产生不同概率的随机数。
假设我们要产生的随机数为1,2,3;它们产生的概率分别为0.5,0.4,0.1;
我们首先产生1-10的随机数n,当n>5时,产生1;当1<n<5时,产生2;当n=1时,产生1;这样,就相当于产生了不同概率的随机数。
何为递归?递归就是在本方法里面调用本方法。一个简单使用递归的例子就是求阶乘。
上面的图形就是用递归画出来的,源代码如下:
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);
}