我试图在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);
}
}
}
答案 0 :(得分:0)
您必须在三角形的三个方向中的每个方向上绘制相同的曲线。您可以通过编写函数drawKochCurve(double level,double sideLength,double additionalAngle)并调用它三次,添加additionalAngle来完成此操作。
维基百科有更多细节:最初由Koch描述的Koch曲线仅由原始三角形的三个边中的一个构成。换句话说,三条Koch曲线形成Koch雪花。 http://en.wikipedia.org/wiki/Koch_snowflake