|
樹木曲線的1次、2次與3次繪圖如下所示:

其中每一次遞迴所使用的leng、angle與branch三個參數如1次樹木曲線所示,這三個參數適當的調整,就可以繪製出不同形狀的樹木結構,而不一
定要遵守一定的比例或規則。
下面是樹木曲線的Java演算程式:
package onlyfun.caterpillar.graphics.recursive; import onlyfun.caterpillar.graphics.Turtle; import java.awt.*; import javax.swing.JApplet; public class TreeCurve extends JApplet { private Turtle t; public void init() { t = new Turtle(); setBackground(Color.black); } public void tree(int n, double x0, double y0, double leng, double angle, double branch, double scale1, double scale2, Turtle t) { if(n == 0) return; t.setpoint(x0, y0); t.setangle(angle); t.move(leng); // Turtle 目前的位置 x0 = t.LPX; y0 = t.LPY; tree(n-1, x0, y0, leng*scale1, angle+branch, branch, scale1, scale2, t); tree(n-1, x0, y0, leng*scale2, angle-branch, branch, scale1, scale2, t); } public void paint(Graphics g) { g.setColor(Color.yellow); double leng = 100.0, // 分枝長度 angle = 90.0, // 分枝與地面的夾角 branch = 20.0; // 分枝的分岐角 t.setGraphics(g); t.window(0, 0, getSize().width, getSize().height); t.view(0, 0, getSize().width, getSize().height); tree(8, 200.0, 50.0, leng, angle, branch, 0.7, 0.7, t); } }

如果將遞迴時的參數改為以下(您可以試試不同的參數),可以繪製出不同的樹木結構:
tree(8, 200.0, 50.0, leng, angle, branch, 0.8, 0.6, t);
 |