⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kochcurves.htm

📁 电脑图学(Computer Graphics)是资料结构、演算法与数学的应用
💻 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:&nbsp;科赫曲线</a></h1>







递回绘图的基本原则,就是以一次函式呼叫的绘图为基础,每次递回时依同样的原则绘制图形,递回绘图单一原则的方式与自然界的一些事物之几何有相类似之处,许多复杂的图形其实遵循着一定的规则,而递回绘图往往可以这些自然界的几何,例如树的成长、螺纹、雪花结晶等等。<br>
<br>
(对于线的递回绘图而言,其0次绘图通常是一条直线)<br>
<br>
科赫曲线(Koch Curves)是由数学家科赫(H.von Koch)所发明的,其1次绘图的原则如下: <br>







<img style="width: 369px; height: 62px;" alt="" src="images/kochCurves-1.jpg"><br>







<br>
<br>
绘图原则是将一条长度L的直线分为三分,第一次画L/3,然后仰60度再画L/3,然后俯120度再画L/3,然后仰60度再画L/3。<br>
<br>
如果是2次科赫曲线,则L会被分为L/(3^2),接下来依此类推,2次科赫曲线如下,注意与1次科赫曲线相同的部份在哪: <br>








<img style="width: 363px; height: 77px;" alt="" src="images/kochCurves-2.jpg"><br>
<br>
<br>







<span class="postbody"></span>
下面是3次科赫曲线:<br>
<img style="width: 381px; height: 80px;" alt="" src="images/kochCurves-3.jpg"><br>
<br>
<br>
以下是科赫曲线的实作,其中使用了<a href="TwoDimTurtle.htm">二维海龟绘图法</a>:<br>
<ul>
  <li> KochCurves.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 KochCurve 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 koch(int n, double leng, Turtle t) { <br>        if(n == 0) <br>            t.move(leng); <br>        else { <br>            koch(n-1, leng, t); <br>            t.turn(60); <br>            koch(n-1, leng, t); <br>            t.turn(-120); <br>            koch(n-1, leng, t); <br>            t.turn(60); <br>            koch(n-1, leng, t); <br>        } <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(50, 200); <br>        t.setangle(0); <br>        <br>        koch(3, 10, t); <br>    }     <br>}</pre>
<br>
如果您将三条科赫曲线以每次旋转120度并凑起来,可以得到类似雪花图案的科赫岛,如下所示:<br>
<img style="width: 271px; height: 303px;" alt="" src="images/kochCurves-4.jpg"><br>
<br>







</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -