Ex12_4
/*-----------------------
Ex12_4.java
色々描く:コッホ曲線
------------------------*/
package jp_bunkyo;
import java.applet.*;
import java.awt.*;
public class Ex12_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);
}
}