フラクタルを描画しよう

再帰で描画するコッホ曲線

コッホ曲線とは

コッホ曲線は、Kochさんが発見した直線を規則的に組替えていく図です。

コッホ曲線の概要

コッホ曲線に終わりはありません。なぜなら、単に直線を三等分し、その等分した点で正三角形(既存の2点間の直線は書かない)を書くだけだからです。それを永遠に続けます。すなわちこの考え方がコッホ曲線なのです。

コッホ曲線の成長

  1. 直線を記述します(レベル0)

  2. 直線を三等分します。
  3. その分割した2点で正三角形を書きます。
  4. 分割点の直線を消します。(レベル1)
  5. 2,3,4を繰返します。(レベル2)
これを無限に繰返すだけです。

アルゴリズム

  1. 直線aを長さl で書きます 。
  2. 直線aに対して角度60度で直線bを長さl で書きます。
  3. 直線bに対して角度120度で直線cを長さl で書きます。
  4. 直線cに対して角度60度で直線dを長さl で書きます。

プログラミング化への手順

計算式の表記

x1, y1からα角度の長さlの座標(x2,y2)を求めます。


x2 = x1+ l ×cos(α)
y2 = y1+ l ×sin(α)

プログラミングのアルゴリズム

再帰の詳細を説明します。
再帰とは自分自身を繰返すことです。ここでは、上記アルゴリズムを繰返すことを指しています。ここで、このアルゴリズムを「コッホ再帰関数」とします。

既存の角度で線を書きます。
既存の角度+60度で線を書きます。
既存の角度+120度で線を書きます。
既存の角度+60度で線を書きます。

これをプログラムにすると、
指定レベルになった場合、
    指定された角度で描画
まだレベルになっていないとき、
    既存の角度でレベルを1つ上げて、 「コッホ再帰関数」を呼ぶ。
    既存の角度+60度でレベルを1つ上げて、 「コッホ再帰関数」を呼ぶ。
    既存の角度+120度で レベルを1つ上げて、「コッホ再帰関数」を呼ぶ。
    既存の角度+60度でレベルを1つ上げて、 「コッホ再帰関数」を呼ぶ。

この図は、レベル2の場合です。 Level1の段階では描画しません。Level3になるとさらに、それぞれの角度の下に4つのコッホ曲線を書く集まりがくっつきます。そして、Level2の角度を足した角度で描画されます。


実際のSmalltalkでのプログラミングの場合は、レベルを減らして0の場合に描画します。また、座標軸が左上を原点としているので、2番目と4番目の角度を-60度で計算しています。

 

戻る



Copyright (C) 1999-2008 Office KAI. All Rights Reserved.