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:&nbsp;树木曲线</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 + -
显示快捷键?