1. ホーム
  2. java

[解決済み】koch snowflake java recursion

2022-01-30 19:25:44

質問内容

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

解決方法は?

三角形の3方向にそれぞれ同じ曲線を描く必要があります。関数 drawKochCurve(double level, double sideLength, double additionalAngle) を書いて、additionalAngle を追加しながら 3 回呼び出せば、これができる。

Wikipediaに詳細があります。 コッホがもともと記述したコッホ曲線は、元の三角形の3つの辺のうちの1つだけで構成されている。つまり、3つのコッホ曲線がコッホ雪片を作るのです。 http://en.wikipedia.org/wiki/Koch_snowflake