1 package JSci.maths.chaos; 2 3 8 public abstract class KochCurve extends Object { 9 public KochCurve() {} 10 public double hausdorffDimension() { 11 return Math.log(4.0)/Math.log(3.0); 12 } 13 21 public void recurse(double startX, double startY, double endX, double endY, int n) { 22 if(n==0) 23 return; 24 final double l_3X=(endX-startX)/3.0; 25 final double l_3Y=(endY-startY)/3.0; 26 eraseLine(startX+l_3X, startY+l_3Y, endX-l_3X, endY-l_3Y); 27 final double h=Math.sqrt(3.0)/2.0; 28 final double pX=(startX+endX)/2.0-l_3Y*h; 29 final double pY=(startY+endY)/2.0+l_3X*h; 30 drawLine(startX+l_3X, startY+l_3Y, pX, pY); 31 drawLine(pX, pY, endX-l_3X, endY-l_3Y); 32 recurse(startX, startY, startX+l_3X, startY+l_3Y, n-1); 33 recurse(startX+l_3X, startY+l_3Y, pX, pY, n-1); 34 recurse(pX, pY, endX-l_3X, endY-l_3Y, n-1); 35 recurse(endX-l_3X, endY-l_3Y, endX, endY, n-1); 36 } 37 42 protected abstract void drawLine(double startX, double startY, double endX, double endY); 43 48 protected abstract void eraseLine(double startX, double startY, double endX, double endY); 49 } 50 51 | Popular Tags |