分形之科赫雪花
科赫雪花是科赫曲线的升级版,其实也不难,只是多加了几条原始曲线而已。如果说科赫曲线的原始模型是一条直线,那科赫雪花的原始模型就是一个三角形。科赫雪花所应用的最核心的技术就是递归,它和循环不同,递归是不断地调用自己,而循环则是重复一段算法而已。过程相同,原理不同。
private void drawKoch(double x1, double y1, double x2, double y2, int depth,Graphics g) {if(depth<=1){g.drawLine((int)x1,(int) y1,(int)x2,(int)y2);//递归之后画出曲线}else{double x3=(x2-x1)/3+x1;double x4=(x2-x1)*2/3+x1;double y3=(y2-y1)/3+y1;double y4=(y2-y1)*2/3+y1;//其中两个顶点的情况double x5=0,y5=0;if(y1==y2){x5=(x1+x2)/2;y5=y1-(x4-x3)/2*Math.sqrt(3);}if((y4-y3)/(x4-x3)<0){x5=x1;y5=y4;}if((y4-y3)/(x4-x3)>0){x5=x2;y5=y3;//判断曲线的三种情况以及不同方法}drawKoch(x1, y1, x3, y3, depth-1,g);drawKoch(x3, y3, x5, y5, depth-1,g);drawKoch(x5, y5, x4, y4, depth-1,g);drawKoch(x4, y4, x2, y2, depth-1,g);//深度减一,继续递归}}