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