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