/*----------------------- ex11_4b.java 色々描く:4b.樹木曲線 ------------------------*/ import java.applet.*; import java.awt.*; /* */ public class ex11_4b 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); } }