SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで学ぶグラフィックス処理

2次元カオス図形を芸術的に描画する

エノン写像、グモウスキー・ミラ写像の探索


  • X ポスト
  • このエントリーをはてなブックマークに追加

プログラムの実行結果

 アプレットの実行画面の全体は省略し、得られた結果のみを示します。

エノン写像

 エノン写像の基本式に使われる関数はですが、これを変えることによって、図形が変わります。図1で、(a)と(b)は、基本式そのままですが、それ以外は、変化させてあります。αは、その時の設定値です。

 基本式のでは、いかにもカオスらしい不規則な図形が現れます。では、対象性のある幾何学的な模様が得られます。は、一番面白い図形が得られるような気がします。

図1 エノン写像で得られたカオス図形
図1 エノン写像で得られたカオス図形

グモウスキー・ミラ写像

 グモウスキー・ミラ写像の基本式での関数はですが、これを変えることによって、図形が変わります。図2は基本式そのままの場合のカオス図形を示しています。aは、その時の設定値です。

 筆者が対象性のある図形を美しいと感じたせいか、似たような図形が集まっていますが、他にも面白い図形が得られます。

図2 グモウスキー・ミラ写像の基本式で得られたカオス図形
図2 グモウスキー・ミラ写像の基本式で得られたカオス図形

 グモウスキー・ミラ写像の基本式の関数を変形してを使ってみました。図3は変形式によるカオス図形を示しています。aは、その時の設定値です。

図3 グモウスキー・ミラ写像の基本式の変形(1)で得られたカオス図形
図3 グモウスキー・ミラ写像の基本式の変形(1)で得られたカオス図形

 

 グモウスキー・ミラ写像の基本式の関数を変形してを使ってみました。図4は変形式によるカオス図形を示しています。aは、その時の設定値です。

図4 グモウスキー・ミラ写像の基本式の変形(2)で得られたカオス図形
図4 グモウスキー・ミラ写像の基本式の変形(2)で得られたカオス図形

まとめ

 カオスを描画するソフトウエアは、有償無償を含めて多数あります。またこれらを解説したサイトや「カオス・ギャラリー」もネット上に多数あります。このような状況下でカオスの描画方法を紹介するために、それなりの努力をしました。

 カオス図形を描画するプログラム自体は非常に簡単です。高速化のテクニックは必要ですが、常識的な範囲です。しかし、「どの式を使うか」「どのパラメータを使うか」は、今回、数多くの探索によって得たノウハウです。実際のプログラム開発の現場において、プログラムの実装よりも、その仕様の基本設計の方がはるかに困難で時間がかかるのと同じです。

 エノン写像は、よりカオス的で、不定形の図形が多く見られます。一方、グモウスキー・ミラ写像は、花弁に似た図形が多く見られます。細かい部分に注目するとカオス的ですが、全体として統一が取れた形をしています。

 今回採り上げたのは、面積保存型写像(Area-preserving Mapping)ですが、面積縮小型にすると良く知られた鳥の翼や笹の葉のような図形が得られます。ただし、あまり美的には感じませんでしたので、本稿では省略しました。参考資料により、本稿で紹介したプログラムを修正して試みて下さい。

参考資料

 本稿のきっかけは、筆者のウエブサイト『Visual C++の易しい使い方(15)-微分方程式の数値解法の色々とカオス図形の描画-(ただし、現在はVisual C++ 2005 Express Edition版に改定)』ですが、ここではRunge-Kutta法による微分方程式の解法に主眼を置き、応用として、3次元カオスのローレンツ・アトラクタを紹介しているに過ぎません。カオスの3次元モデルに関心のある方は参照して下さい。

 ネット上には、多くの優れた資料が公開されています。下記は、その一例です。

 カオス図形の美しさに注目し、プログラムと併せて紹介した書籍は次の通りです。

  1. カオスCGコレクション』 川上博 著、サイエンス社、1990年9月
  2. CによるカオスCG』 川上博・上田哲史 著、サイエンス社、1994年4月
  3. 初めてのフラクタル-数学とプログラミング-』 Hans Lauwerier 著、西川利男 訳、丸善、1996年8月
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで学ぶグラフィックス処理連載記事一覧

もっと読む

この記事の著者

石立 喬(イシダテ タカシ)

1955年東京工大卒。同年、NECへ入社し、NEC初のコンピュータの開発に参画。磁気メモリ、半導体メモリの開発、LSI設計などを経て、1989年帝京大学理工学部教授。情報、通信、電子関係の教育を担当。2002年定年により退職し現在に至る。2000年より、Webサイト「Visual C++の勉強部屋」を公開。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/327 2008/03/16 10:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング