ランダムドットステレオグラム [ランダムドットステレオグラムアプリ]
今日ほぼ一日かけてちょっとしたソフトを書いていた。ランダムドットステレオグラムを作るアプリ。
まだ完成してないけど、基本的な動作はするようになった。ランダムドットステレオグラムの例を兼ねて、アプリの出力例。
図の上に並んだ緑色のふたつの丸が重なるように目の輻輳を調整すると、ランダムな色の面に凹凸が見えてくるはず。
なんで、こんなものを作ろうと思ったか、というと、2次元上の実数値関数 を表示するとき、何らかの方法で2次元化しないといけない。例えばMathematicaには
これがContourPlotで、 で、これがDensityPlot、 これがPlot3Dで、みっつとも同じものをプロットしている。
ContourPlotやDensityPlotは直感的でないので見慣れないとよくわからない。Plot3Dは比較的わかりやすいけど、例えば大きな凸があるとその後ろがどうなっているかは表示を回転させないとわからない。ということで一長一短。
ちょっと毛並みの違ったものとしてランダムドットステレオグラムを使う、というのを考えた。Mathematicaで書いてたけど、やっぱりかなり効率が悪い(表示に時間がかかる)ので、Cocoa/Objective-Cで書くことにした。ContourPlotやDensityPlotに較べると直感的だろう、ちゃんと見ることができれば、だけど。ちなみに、最初のカラーのステレオグラムは のようなsinc関数をプロットしたもの。うーん、直感的か?と言われると....
アプリとしてはまだユーザインターフェイスとか書かなきゃいけない部分が残ってる。それと、
ちなみに、今回作ってみてはじめて気がついた。不連続のある関数の表示にはカラーのグラデーションがあるランダムパターンより、モノクロのバイナリの方が見やすい。例えば、
というようなかんじ。jpeg圧縮するとノイズのせいでわからんか。
とりあえずもうちょっとちゃんとしたら、またここで公開することにするのでよろしく。
まだ完成してないけど、基本的な動作はするようになった。ランダムドットステレオグラムの例を兼ねて、アプリの出力例。
図の上に並んだ緑色のふたつの丸が重なるように目の輻輳を調整すると、ランダムな色の面に凹凸が見えてくるはず。
なんで、こんなものを作ろうと思ったか、というと、2次元上の実数値関数 を表示するとき、何らかの方法で2次元化しないといけない。例えばMathematicaには
- ContourPlot
- DensityPlot
- Plot3D
これがContourPlotで、 で、これがDensityPlot、 これがPlot3Dで、みっつとも同じものをプロットしている。
ContourPlotやDensityPlotは直感的でないので見慣れないとよくわからない。Plot3Dは比較的わかりやすいけど、例えば大きな凸があるとその後ろがどうなっているかは表示を回転させないとわからない。ということで一長一短。
ちょっと毛並みの違ったものとしてランダムドットステレオグラムを使う、というのを考えた。Mathematicaで書いてたけど、やっぱりかなり効率が悪い(表示に時間がかかる)ので、Cocoa/Objective-Cで書くことにした。ContourPlotやDensityPlotに較べると直感的だろう、ちゃんと見ることができれば、だけど。ちなみに、最初のカラーのステレオグラムは のようなsinc関数をプロットしたもの。うーん、直感的か?と言われると....
アプリとしてはまだユーザインターフェイスとか書かなきゃいけない部分が残ってる。それと、
- 入力形式をどうするか
- ステレオグラムを素直に左から描いているので、ランダムパターンの対称性が悪い
ちなみに、今回作ってみてはじめて気がついた。不連続のある関数の表示にはカラーのグラデーションがあるランダムパターンより、モノクロのバイナリの方が見やすい。例えば、
というようなかんじ。jpeg圧縮するとノイズのせいでわからんか。
とりあえずもうちょっとちゃんとしたら、またここで公開することにするのでよろしく。
2011-06-05 22:01
nice!(0)
コメント(0)
トラックバック(0)
コメント 0