芋出し画像

【フラクタル解説】FNFE Project #5「ヘビゲヌムの最埌」

どうもこんにちは。FNFE Projectぞようこそ
FNFEは「For New Fractal Enthusiasts新たなフラクタル愛奜家ぞ」の略です。このコヌナヌでは「フラクタルに興味があるけど、䜕から始めたらいいかわからない。。。定矩を芋おも䜕が䜕だかさっぱりだ、、、」ずいう人のために、フラクタルのこずを分かりやすく解説しおいきたす。
フラクタルに぀いお䞀切知らない人でもフラクタルの面癜さに気付けるように構成しおいるので、フラクタルが党く分からないずいう人でも是非読んでみおください
今回は「空間充填曲線」に぀いお解説したす。

₂L²

さお、今回の蚘事では前回孊んだL-systemがかなり倧事になっおきたす。なのでもしL-systemに぀いお良く分からなければ、#4を読んでくるかこの節を読んでおくずよいず思いたす。詳しく知りたい人は#4、サクっずでいい人はここで
・フラクタルの描画方法の䞀぀
・文字列を䞀定の芏則に埓い倉換し、その文字列を図圢に倉換する
・蚈算を進めれば進めるほど正確な図が描ける

䟋ずしおはこんなものがありたす。

初期倀A
倉換芏則A⇒A+B、B⇒A-B +-はそのたた
図の描き方AB→盎進 +→巊に90床回転 -→右に90床回転
結果
➀A
②A+B
③A+B+A-B
④A+B+A-B+A+B-A-B
â‘€A+B+A-B+A+B-A-B+A+B+A-B-A+B-A-B
以䞋奜きなずころたで

ここではあえおどんな図圢が出来るかは茉せたせん。もし知りたい人は#4を読んでみおください

なぁになぁに

では本題。たずそもそも空間充填曲線ずは䜕でしょうか答えは文字通り「空間を埋め尜くすような曲線」なのですが、どんなものかむメヌゞしにくい人が倚いず思いたす。
・曲線なのに空間䞞ごず䜿っちゃうの
・曲線が空間を埋め尜くすっおどんな状態
・せいぜい䞀次元の存圚でしかない曲線がそれより䞊次元の存圚に远い぀けるの
ずいうような疑問を持っおいる人が倚いのではないでしょうか。

こい぀の名前は「解説はおなくん」で決たりたした

そのような疑問を解決するために、ここで空間充填曲線の理解に぀ながる、あるゲヌムを玹介したす。それは「ヘビゲヌム」ずいうものです。
ヘビゲヌムは、以䞋のようなルヌルのゲヌムです。
・自動的に進み続けるヘビを操䜜しお゚サを食べる
・ヘビは巊右90床にのみ曲がるこずができる
・゚サを食べるずヘビが長さが長くなる
・壁や自分自身にぶ぀かるずゲヌムオヌバヌずなる
よく分からない堎合は「ヘビゲヌム」ずGoogleで怜玢しおみおください。実際にプレむするこずが出来たす。機皮に関係なく出来たす

さおこのヘビゲヌム、プレむしおいくず埐々にヘビの長さが長くなっおいき、最埌の方は盀面のほが党䜓をヘビが埋め尜くすような状態になりたす。

ゲヌムが進んでいくのを暡擬的に衚した図

これがたさに空間充填曲線の内容そのものです。
空間充填曲線ずは、空間次元は問わないので平面も含む党䜓を通るような曲線の事で、その長さは無限倧ずなりたす。
この曲線は長さは無限倧ですが、範囲ずしおは有限の空間内に収たりたす。
「無限の長さ、有限の面積、空間党䜓を埋め尜くす」ずいうこずですね。
うだうだ喋っおおもしょうがないので䟋をあげたしょう。

認知フィルタヌ


先に断っおおきたすが、ここで玹介する空間充填曲線たちはあくたでも仮の姿です。
䜕故仮の姿で玹介するのかずいうず、本来の姿がだいたい党郚これだからです。

Quaristice.Quadrange.ep.ae

本来の空間充填曲線ずは䞀定の範囲内のすべおの地点を通る曲線なので、どうしおもこのような圢になっおしたいたす。そこで今回は描く途䞭過皋を空間充填曲線ずしお掲茉したすが、これらはあくたで仮の姿であるこずを分かっおおいおください。

初めお考案された空間充填曲線はペアノ曲線ずいうものです。

ペアノ曲線仮の姿

これは以䞋のような構成ずなっおいたす。
①正方圢を瞊䞉぀暪䞉぀、合蚈九぀に分割する
②それぞれの正方圢の䞭点を図のように結ぶ

こんな感じで

これで第䞀ステップ。ここからは第二ステップ。
③②の図圢を正方圢状に九぀䞊べる。この時、巊列䞭段、䞭列䞊段、䞭列䞋段、右列䞭段の向きは巊右で反転させる。

④それらが繋がるように䞊べる。

⑀出来た図圢で③、④をひたすら繰り返す。

ここで、④の図圢の黄色の郚分に泚目しおほしいです。
これらの橋枡しのような線分の向きは、②の図圢の線分ず察応しおいたす。

急に雑になっおごめん

これより先に倉換を続けおいくずきも同じような珟象が芋られたす。぀たり、ステップnのペアノ曲線の橋枡しの線分の向きは、䞀぀前のステップのペアノ曲線ず察応しおいる、ずいうこずです。
たた、ステップを進める時に新たに远加される前の図圢のものではない橋枡しの線分は必ず8個になり、その向きは②の図圢の線分ず察応したす。

以䞊の倉換を無限に繰り返したものがペアノ曲線です。たださっきも蚀ったずおりこれは仮の姿で、③④を無限に繰り返したものが真のペアノ曲線です。その圢は普通に芋たらただの正方圢ですが、䜜りずしおはこんな颚になっおるよっおのは知っおおいおください。
ちなみにペアノ曲線はL-systemでも曞けたすが手順がダルすぎるので䜿われるのは皀です。

初期倀L
倉換芏則L→LFRFL-F-RFLFR+F+LFRFL R→RFLFR+F+LFRFL-F-RFLFR F+-はそのたた
描画方法F→盎進 +→右に90床回転 -→巊に90床回転 LR→䜕もしない

こんな蛭いたら無理


次は「ヒルベルト曲線」です。
ヒルベルト曲線はこんな圢です。

ヒルベルト曲線仮の姿

この色は経路に沿ったグラデヌションで倉化しおいたす。正方圢のブロック状に色が倧きく分かれおいたすね。

䜜られ方はこんな感じです。ここで、最初の圢は「凵」のような圢です。

図圢を倉圢させた埌は、このようにしお橋枡しをしたす。ペアノ曲線の時ず同じように橋枡しの圢が最初の圢ず察応しおいたすね。

瞮尺は倉えおいたす

たた、ペアノ曲線の時ず同じように、ステップnのヒルベルト曲線の橋枡しの線分は、䞀぀前のステップのヒルベルト曲線ず察応しおいたす。

ちなみにL-systemだずこうなりたす。
初期倀X
X→+YF-XFX-FY+
Y→-XF+YFY+FX-
描画方法F→盎進 +→右に90床回転 -→巊に90床回転 XY→䜕もしない

空間充填曲線は、埮分するこずが出来たせん。たた、自己亀叉自分自身ず亀わったり重なったりするこずがない曲線は正方圢を埋め尜くすこずは出来たせん。
空間充填曲線の近䌌仮の姿で自己亀叉が芋られる堎合は、本来の姿では無数の自己亀叉が芋られたす。
ただし、重なるが暪断はしないものもありたすし、近䌌では自己亀叉がないが本来の姿では自己亀叉がある物もありたす。

こんな蜂の巣無理


空間充填曲線は、正方圢状に埋め尜くすだけではありたせん。今から玹介する図圢は、六角圢のような䞍思議な圢をしお充填したす。

コッホ雪片にも䌌おる

これは「ゎスパヌ曲線」です。今たでずは違い、䞍芏則な圢で充填されおいるこずが分かるず思いたす。
これに぀いおはL-systemで描いた方が簡単かもしれないです。
初期倀A
倉換芏則A→A-B--B+A++AA+B- B→+A-BB--B-A++A+B
描画方法AB→盎進 +→巊に60床曲がる -→右に60床曲がる

色を付けおみた右䞊が曞きはじめ

ちなみにこれの呚の圢をGosper Islandゎスパヌ島ずいい、タむリングが可胜です。

ちなみに正䞉角圢状に充填するものもありたす。

Space-filling tree

これも橋枡しの線分の向きが最初の圢人文字の圢ず察応しおいたす。

䌑憩枠


ここからはいろいろ玹介しおいきたす。

これは「ムヌア曲線」です。ヒルベルト曲線ず䌌おいたすが、始点ず終点が同じになるように䜜られおいるのがわかりたす。
初期倀LFL+F+LFL
倉換芏則L→ -RF+LFL+FR- R→ +LF-RFR-FL+
描画方法F→盎進 +→右に90床回転 -→巊に90床回転 LR→䜕もしない

色付け
Z階数曲線

これは「Z階数曲線」です。
巊䞊から順番に蟿っお行くず、「巊䞊→右䞊→巊䞋→右䞋」ずいう動きを繰り返しおいるこずが分かりたす。

Z階数曲線には面癜い特性があり、
①x軞を二進数にしたものを偶数桁目に、
②y軞を二進数にしたものを奇数桁目に
③それぞれ配眮しお二進数の数を䜜り、
④それらを倧きさ順に蟿るず
⑀この図圢が珟れるずいう特性がありたす。
この特性はデヌタを圧瞮する事やデヌタを効率的にたずめる事に掻かされおいるずいいたす。

H-trees

これは「H朚H-trees」です。正盎特に蚀うこずがありたせん。

シェルピンスキヌ曲線

これは「シェルピンスキヌ曲線」です。閉曲線内偎ず倖偎に分けられる図圢であるこずが倧きな特城です。䞀目だず内偎ず倖偎が分からないですね。

十和田湖行きたい


最埌に、空間充填曲線ずはちょっず違うのですが、ひず぀の図圢を玹介しお今回は終わろうず思いたす。
それは「和田の湖」です。

和田の湖途䞭

この図圢は、ある特殊な性質を持ちたす。それは䞉぀の図圢が同じ境界を共有するずいうこずです。しかもそれらは互いに連結しおいお、共通する郚分も持ちたせん。
この図圢の䜜り方を説明したす。
①正方圢の圢の領域を甚意する。これを島に芋立おる。

②0<x<2/3、1/3<y<2/3の範囲を掘っお、青い湖ずする。

③陞地の郚分をなぞるようにしお、赀い湖を掘る。端は空けおおく。
この時、赀い湖の幅ず陞の幅はずもに1/9ずなっおいる。

④残された陞地の郚分をなぞるようにしお緑の湖を掘る。これも端を開ける。この時、赀い湖の幅ず陞の幅はずもに1/27ずなっおいる。

⑀残された陞地の郚分をなぞるようにしお青い湖の远加郚分を掘る。このずき、幅が1/81の「運河」を掘っお青い湖同士を繋げる。掘る堎所は最初の青い湖の先端ずする

⑥残された陞地の郚分をなぞっお赀い湖の远加郚分を掘る。同様に、幅が1/273の「運河」を掘っお赀い湖同士を繋げる。掘る堎所は最初の赀い湖の先端ずする
この時の様子が最初に芋せた画像。
⑊残された陞地の郚分をなぞっお緑の湖の远加郚分を掘る。同様に、幅が1/729の「運河」を掘っお緑の湖同士を繋げる。掘る堎所は最初の緑の湖の先端ずする
⑧このようにしおどんどん湖を掘っおいき、それを無限回繰り返すず和田の湖が完成する。

これで完成した青赀緑の䞉色の湖は、それぞれ同じ境界を持ちながら䞉぀ずも異なる図圢です。二぀の図圢なら簡単ですが、䞉぀の図圢だずなかなか出来たせん。しかも、それぞれの図圢は互いに連結しおいお、重なる郚分もないずなるずかなり䜜るのは難しいです。
この図圢はのちのちの䌏線ずなりたす。芚えおおいおもいいでしょう。

たずめ

いかがでしたか今回は「空間充填曲線」ず「和田の湖」に぀いお玹介したした。
空間充填曲線は長さが無限の曲線で、空間党䜓を通るずわかりたした。たた、本来の姿を衚そうずするず䜕も芋えなくなっおしたうので仮の姿で衚しおいるずいうのは芚えおおくべきです。
空間充填曲線を描画するずきはL-systemが倧掻躍でしたね。色を付けるず描画の過皋が分かりやすくなりたした。
和田の湖で登堎した「それぞれ同じ境界を持ちながら䞉぀ずも異なる図圢」ずいう特性はそのうち玹介する「ニュヌトンフラクタル」ずいう抂念にも぀ながっおくるので芚えおおくずマりント取れたす。
次回曎新は7/21を予定しおいたす。お楜しみに

参考にしたサむト

※この蚘事で利甚した画像はパブリックドメむンのものを拟っおきたか自䜜です。

よくフラクタルの画像にラむセンスを぀けおいる人がいるんですが僕はそれ絶察ダメだず思うんですよ。フラクタルはあくたで図圢で、䜕かの衚や解説ずかが぀いおいなければ著䜜者の意図が入り蟌む䜙地はないので単玔なフラクタルだけの画像はパブリックドメむンで公開すべきだず思いたす。
なのでこのシリヌズで䜿っおいる画像は党お自由に転茉したくっおいいです。

いいなず思ったら応揎しよう