/*----------------------- ex11_4.java 色々描く:4.コッホ曲線 ------------------------*/ import java.applet.*; import java.awt.*; /* */ public class ex11_4 extends Applet { Graphics g; int n; double x, y, lengt, angle; public void init() { n = 5; // コッホ曲線の次数 x = 50.0; // 初期 x座標 y = 200.0; // 初期 y座標 lengt = 400.0; // コッホ曲線:初期長 angle = 0.0; // コッホ曲線:初期方向 } public void paint(Graphics g) { KochCurve(n, lengt, angle); } private void KochCurve(int n, double len, double agl) { if (n == 0) { double dx = len * Math.cos(agl); double dy = len * Math.sin(agl); g = getGraphics(); g.drawLine((int)x, (int)y, (int)(x+dx), (int)(y+dy)); g.dispose(); x += dx; y += dy; return; } len /= 3; KochCurve(n-1, len, agl); agl -= Math.PI/3; KochCurve(n-1, len, agl); agl += Math.PI*2/3; KochCurve(n-1, len, agl); agl -= Math.PI/3; KochCurve(n-1, len, agl); } }