treecurves.htm
来自「电脑图学(Computer Graphics)是资料结构、演算法与数学的应用」· HTM 代码 · 共 140 行
HTM
140 行
<!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>
树木曲线的1次、2次与3次绘图如下所示:<br>
<img style="width: 501px; height: 178px;" alt="" src="images/treeCurves-1.jpg"><br>
<br>
其中每一次递回所使用的leng、angle与branch三个参数如1次树木曲线所示,这三个参数适当的调整,就可以绘制出不同形状的树木结构,而不一
定要遵守一定的比例或规则。 <br>
<br>
下面是树木曲线的Java演算程式: <br>
<ul>
<li> TreeCurve.java
</li>
</ul>
<pre>package onlyfun.caterpillar.graphics.recursive;<br> <br>import onlyfun.caterpillar.graphics.Turtle;<br>import java.awt.*;<br>import javax.swing.JApplet;<br> <br>public class TreeCurve 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 tree(int n, double x0, double y0, <br> double leng, double angle, double branch,<br> double scale1, double scale2, Turtle t) { <br> <br> if(n == 0) <br> return; <br> <br> t.setpoint(x0, y0); <br> t.setangle(angle); <br> t.move(leng); <br> // Turtle 目前的位置 <br> x0 = t.LPX; <br> y0 = t.LPY; <br> <br> tree(n-1, x0, y0, leng*scale1, angle+branch, branch, <br> scale1, scale2, t);<br> tree(n-1, x0, y0, leng*scale2, angle-branch, branch, <br> scale1, scale2, t);<br> }<br> <br> public void paint(Graphics g) { <br> g.setColor(Color.yellow);<br> <br> double leng = 100.0, // 分枝长度 <br> angle = 90.0, // 分枝与地面的夹角 <br> branch = 20.0; // 分枝的分岐角 <br> <br> t.setGraphics(g); <br> t.window(0, 0, getSize().width, getSize().height); <br> t.view(0, 0, getSize().width, getSize().height); <br> <br> tree(8, 200.0, 50.0, leng, angle, branch, 0.7, 0.7, t); <br> } <br>}</pre>
<br>
<img style="width: 343px; height: 334px;" alt="" src="images/treeCurves-2.jpg"><br>
<br>
如果将递回时的参数改为以下(您可以试试不同的参数),可以绘制出不同的树木结构:<br>
<div style="margin-left: 40px;"><span style="font-weight: bold; font-family: Courier New,Courier,monospace;">tree(8, 200.0, 50.0, leng, angle, branch, 0.8, 0.6, t);</span><br>
</div>
<br>
<img style="width: 342px; height: 348px;" alt="" src="images/treeCurves-3.jpg"><br>
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?