|
遞迴繪圖的基本原則,就是以一次函式呼叫的繪圖為基礎,每次遞迴時依同樣的原則繪製圖形,遞迴繪圖單一原則的方式與自然界的一些事物之幾何有相類似之處,許多複雜的圖形其實遵循著一定的規則,而遞迴繪圖往往可以這些自然界的幾何,例如樹的成長、螺紋、雪花結晶等等。
(對於線的遞迴繪圖而言,其0次繪圖通常是一條直線)
科赫曲線(Koch Curves)是由數學家科赫(H.von Koch)所發明的,其1次繪圖的原則如下:

繪圖原則是將一條長度L的直線分為三分,第一次畫L/3,然後仰60度再畫L/3,然後俯120度再畫L/3,然後仰60度再畫L/3。
如果是2次科赫曲線,則L會被分為L/(3^2),接下來依此類推,2次科赫曲線如下,注意與1次科赫曲線相同的部份在哪:

下面是3次科赫曲線:

以下是科赫曲線的實作,其中使用了二維海龜繪圖法:
package onlyfun.caterpillar.graphics.recursive; import onlyfun.caterpillar.graphics.Turtle; import java.awt.*; import javax.swing.JApplet; public class KochCurve extends JApplet { private Turtle t; public void init() { t = new Turtle(); setBackground(Color.black); } public void koch(int n, double leng, Turtle t) { if(n == 0) t.move(leng); else { koch(n-1, leng, t); t.turn(60); koch(n-1, leng, t); t.turn(-120); koch(n-1, leng, t); t.turn(60); koch(n-1, leng, t); } } public void paint(Graphics g) { g.setColor(Color.yellow); t.setGraphics(g); t.window(0, 0, getSize().width, getSize().height); t.view(0, 0, getSize().width, getSize().height); t.setpoint(50, 200); t.setangle(0); koch(3, 10, t); } }
如果您將三條科赫曲線以每次旋轉120度併湊起來,可以得到類似雪花圖案的科赫島,如下所示:
 |