レ☆ト☆ロ☆ラ☆ボ

タイトルテスト中

アポロニアン・ガスケットの描き方(15) ー 全ての円を生み出すアルゴリズム

前回, 第 n 世代の円を描く手順について述べました:

  1. 第 n−1 世代の円 En-1 を1つ選ぶ.
  2. 円 En-1 に接する第 n−2 世代以前の3つの円 F, G, H を見付ける.
  3. (#)によって決まる第 n 世代の円 Fn, Gn, Hn を描く.
  4. 第 n−1 世代の全ての円に対して, 上の 1, 2, 3 を繰り返す.

(#)については, 前回の記事を参照してください.) 手順 1, 2, 3 は次のように図示できます:

このグラフを

と書き換えてみると, 入力データと出力データの形が同じになります. 実際, グラフの右側の部分では,

が成り立っています.

このようにグラフを書き換えると, 今得た出力データを今度は第 n+1 世代の円を生み出すための入力データとして使うことができます. そうすると, グラフは次世代へ次世代へと伸びていきます:

(例えば, B2 という文字が複数回現れていますが, これらが同一の円を表すわけではありません. 複数の円に B2 という共通のラベルが貼られているようなものだと考えて下さい.)

第 0 世代の円(A, B, C, D)から始めて, 上のグラフで指示されるように「円の置き換え」を行うと, アポロニアン・ガスケットに現れる全ての円が得られます. このグラフは, 全ての円を生み出すためのアルゴリズムを可視化したものになっています.