koch雪花java递归

时间:2012-10-21 18:49:48

标签: java

我试图在java中使用递归和gpdraw制作一个koch雪花。我可以制作实际的koch曲线本身,但我不知道如何让它一路走来并制作雪花。

import gpdraw.*;

public class KochCurve
{
  private SketchPad myPaper;
  private DrawingTool myPencil;

  public KochCurve()
  {
    myPaper = new SketchPad(600,600);
    myPencil = new DrawingTool(myPaper);
  }

  public void draw()
  {
    drawKochCurve(6, 300);
  }

  private void drawKochCurve(double level, double sideLength)
  {
    if(level < 1)
       myPencil.forward(sideLength);

    else
    {
      drawKochCurve(level - 1, (sideLength)/3);
      myPencil.turnLeft(60);
      drawKochCurve(level - 1, (sideLength)/3);
      myPencil.turnRight(120);
      drawKochCurve(level - 1, (sideLength)/3);
      myPencil.turnLeft(60);   
      drawKochCurve(level - 1, (sideLength)/3);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您必须在三角形的三个方向中的每个方向上绘制相同的曲线。您可以通过编写函数drawKochCurve(double level,double sideLength,double additionalAngle)并调用它三次,添加additionalAngle来完成此操作。

维基百科有更多细节:最初由Koch描述的Koch曲线仅由原始三角形的三个边中的一个构成。换句话说,三条Koch曲线形成Koch雪花。 http://en.wikipedia.org/wiki/Koch_snowflake