Ex12_5
/*-----------------------
ex12_5.java
色々描く:樹木曲線
------------------------*/
package jp_bunkyo;
import java.applet.*;
import java.awt.*;
public class Ex12_5 extends Applet {
Graphics g;
int n;
double x, y, lengt, angle, scale, brnch;
public void init() {
n = 8; // 樹木曲線の深さ
x = 200.0; // 初期 x座標
y = 0.0; // 初期 y座標
angle = Math.PI/2; // 樹木:木の伸縮方向
scale = 1.4; // 樹木:枝伸縮率
lengt = 80.0; // 樹木:枝長
brnch = Math.PI/6; // 樹木:枝分岐角度
}
public void paint(Graphics g) {
draw_tree(n, x, y, lengt, angle);
}
private void draw_tree(int n, double lx, double ly, double len, double agl) {
if (n == 0) {
return;
}
double dx = len * Math.cos(agl);
double dy = len * Math.sin(agl);
g = getGraphics();
g.drawLine((int)lx, 300-(int)ly, (int)(lx+dx), 300-(int)(ly+dy));
g.dispose();
lx += dx; ly += dy;
draw_tree(n-1, lx, ly, len/scale, agl-brnch);
draw_tree(n-1, lx, ly, len/scale, agl+brnch);
}
}