From Gossip@caterpillar

Computer Graphics: 龍形曲線

 

 


龍形曲線是由NASA的物理學家J.E.Heighway所提出,這種曲線每次前進一定長度,然後轉動90度或- 90度繼續前進,但是走過的路徑並不重複。

下圖為龍形曲線的1次至4次繪圖結果:


Java程式繪圖如下所示:

  • DragonCurve.java
package onlyfun.caterpillar.graphics.recursive;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JApplet;
import onlyfun.caterpillar.graphics.Turtle;

public class DragonCurve extends JApplet {
private Turtle t;

public void init() {
t = new Turtle();

setBackground(Color.black);
}

public void dragon(int n, double a, Turtle t) {
if(n == 0)
t.move(4);
else {
dragon(n-1, 90, t);
t.turn(a);
dragon(n-1, -90, 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(150, 150);
dragon(10, 90, t);
}
}



其實也並不一定要以90度為單位來轉彎,您可以自行設定為其它的角度來試試看會畫出什麼圖形。