第一のプロジェクトについて【実践的Macintoshプログラミング解説】

印刷用表示 |テキストサイズ 小 |中 |大 |

CoreData版 Repeating Motif Generator の開発 Repeating Motif Wonderland CoreData 実践的 Macintosh プログラミング解説

LinkIconホーム

更新日 2009-05-24

第一のプロジェクトについて

firstProjectAppImage.png
 まずは旧 Repeating Motif Wonderland と同様に、最初の目標を「最小の機能でとりあえず動くものを作る事」と設定します。

 プログラムのひな形を作り、発振器出力を表示させるところまでが目的です。とはいっても、やるべき事はそれなりにいろいろとあります。

 完成したアプリケーションはこんな感じで動きます。

繰返し紋様を作る方法

 さて、繰返し紋様を作る方法は一つではありませんが、「パソコンで描く紋様とデザイン」に書かれている方法では、繰返し紋様を作成するには、次の二つのステップが必要です。

  1. 原図を作成する
  2. 原図を変形し、指定されたパターンで平面を埋め尽くすように配置する

 まずは最初の、原図を作成する部分からプログラムを作っていきます。

原図をどうやって作るか

 原図を作る方法ですが、一言でいうとリサージュ図形に高調波をのせて作ります。ではリサージュ図形とは何か?Wikipediaによると、「互いに直交する二つの単振動を合成して得られる軌跡が描く平面図形のこと」となります。これだけではイメージが湧かないと思いますので、例をお見せしましょう。

Lissajous.png

 要するに、点のX座標とY座標の値をそれぞれ正弦波で振ってやり、それらの点をつないでやればよいのです。振幅比、周波数比が1:1で、位相がπ/2ずれている場合は、左端のように円になります。各正弦波の振幅比、周波数比、位相のずれを変化させてやると、上図の左から2、3、4番目の様に、様々な図形が描き出されます。式で書くと、

  • x = A sin(at+b)
  • y = B sin(ct+d)

となります。ちなみに正弦波ですから、tを0から2πまで変化させてやれば元の状態まで戻ります。図形を描くぶんには、それ以上変化させても同じところをなぞるだけで意味がありませんから、0から2πまでで充分です。

 xの式に現れる初期位相bは意味がないように思われるかもしれませんが、後でこの式を拡張した際に意味が出てくるので、敢えてつけています。

【コラム】リサージュ図形?リサジュー図形?


 余談ですが、正式には「リサジュー図形」というのですね。今回調べるまでは全く知りませんでした。しかし、私の頭には「リサージュ」としっかりインプットされてしまっているので、いまさら「リサジュー」と言われても気持ち悪くて使えません。したがって、ここでは「リサージュ」で通させてもらいます。「パソコンで描く紋様とデザイン」でも「リサージュ」です。

 さらに余談ですが、電気通信大学の校章LinkIconにリサージュ図形が使われているのだそうです。上の四つの図形のうち、左から3番目の図形がそれです。

第一のプロジェクトでどこまで作るのか

 原図を作る下準備として、リサージュ図形を作る事にします。そのリサージュ図形を作るには、正弦波を出力する発振器が必要です。そこで第一のプロジェクトでは

  1. 発振器を表すモデルを作る
  2. 発振器出力を表示するビューを作る
  3. 両者をコントローラで連動させる

という所まで実現させる事にします。CoreDataを使えばファイル入出力とアンドゥが自動的にサポートされるので、機能は少ないながらこれだけでかなり完成度の高いアプリケーションになります。