📄 ferncurves.htm
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="css/stdlayout.css" type="text/css">
<link rel="stylesheet" href="css/print.css" type="text/css">
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<title>蕨叶曲线</title>
</head>
<body>
<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>
<h1><a href="ComputerGraphics.htm">Computer Graphics: 蕨叶曲线</a></h1>
蕨叶曲线的递回绘图必须呼叫绘图函式本身三次,所以较为复杂一些,先看看蕨叶曲线的基本图案,如下所示: <br>
<img style="width: 88px; height: 61px;" alt="" src="images/fernCurves-1.jpg"><br>
<br>
<br>
这个基本图案主要由一个主干与两个分枝组成,而递回绘图的方向主要就是由这三个部份开始,如下所示: <br>
<img style="width: 258px; height: 117px;" alt="" src="images/fernCurves-2.jpg"><br>
<br>
<br>
如果只看主干的递回部份,就可以大致看出蕨叶的骨架了,如下所示:<br>
<img style="width: 108px; height: 136px;" alt="" src="images/fernCurves-3.jpg"><br>
<br>
<br>
分枝的部份即是这个骨架的不断缩小绘制而成,而递回停止的条件是看蕨叶分枝最小长度设定为多少。<br>
<br>
以下是Java所撰写的参考程式: <br>
<ul>
<li> FernCurve.java
</li>
</ul>
<pre>package onlyfun.caterpillar.graphics.recursive;<br> <br>import java.awt.Color;<br>import java.awt.Graphics;<br>import javax.swing.JApplet;<br>import onlyfun.caterpillar.graphics.Turtle;<br> <br>public class FernCurve extends JApplet {<br> private Turtle t;<br> <br> public void init() { <br> t = new Turtle(); <br> <br> setBackground(Color.black); <br> }<br> <br> public void fern(double leng, double min, <br> double k1, double k2, Turtle t) { <br> t.move(leng); <br> if(leng > min) { <br> t.turn(70.0); <br> fern(k2*leng, min, k1, k2, t); <br> t.turn(-71.0); <br> t.move(k1*leng); <br> t.turn(-69.0); <br> fern(k1*k2*leng, min, k1, k2, t); <br> t.turn(68.0); <br> fern(k1*k1*leng, min, k1, k2, t); <br> t.turn(1.0); <br> t.warp(-k1*leng); <br> t.turn(1.0); <br> } <br> t.warp(-leng); <br> }<br> <br> public void paint(Graphics g) {<br> g.setColor(Color.yellow);<br> <br> t.setGraphics(g);<br> t.window(0, 0, getSize().width, getSize().height); <br> t.view(0, 0, getSize().width, getSize().height); <br> t.setpoint(300, 50); <br> t.setangle(90.0); <br> <br> fern(30, 0.1, 0.9, 0.3, t);<br> } <br>}<br></pre>
<br>
<img style="width: 176px; height: 293px;" alt="" src="images/fernCurves-4.jpg"><br>
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -