0

Javaで再帰とgpdrawを使用してコッホスノーフレークを作成しようとしています。実際のコッホ曲線自体を作成することはできますが、それを完全に回してスノーフレークを作成する方法がわかりません。

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);
    }
  }
}
4

1 に答える 1

0

三角形の3つの方向のそれぞれに同じ曲線を描く必要があります。これを行うには、関数drawKochCurve(double level、double sideLength、double additionalAngle)を記述し、それを3回呼び出して、additionalAngleを追加します。

ウィキペディアに詳細があります。コッホによって最初に記述されたコッホ曲線は、元の三角形の3つの辺のうちの1つだけで構成されています。つまり、3つのコッホ曲線がコッホスノーフレークを作成します。http://en.wikipedia.org/wiki/Koch_snowflake

于 2012-10-21T19:01:28.447 に答える