分形之科赫雪片

分形之科赫雪花
科赫雪花是科赫曲线的升级版,其实也不难,只是多加了几条原始曲线而已。如果说科赫曲线的原始模型是一条直线,那科赫雪花的原始模型就是一个三角形。科赫雪花所应用的最核心的技术就是递归,它和循环不同,递归是不断地调用自己,而循环则是重复一段算法而已。过程相同,原理不同。
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);//深度减一,继续递归
	}
	}

depth指的是递归的深度,控制递归的次数。