hibitekitou
Quartz Composer でのカメラ位置
mac |2011-10-20
昨日書いた内容はネットをあさってみると、どうもこーいうことらしい。
Quartz Composerのビューアの絵を表示しているカメラは、画面の幅(というかイメージプレーンの幅)が2で、FOVが60度になるように設定されていると。だから、カメラの位置は1/tan(60/2)ってことになると。
という仮説から、以下のように組んでみました。
なんとなくうまく動いているように見えます。
この考え方を基本に、いじっていくかな…。
<追記>
SI上で同じ値のカメラとオブジェクトを置いて、絵を重ねてみた。
![](https://blogimg.goo.ne.jp/user_image/66/6d/8a7bcc7afc6bd27b453add7cce1f56cd.jpg?random=c35eb64bd920f80bfb7c0134aa412935)
一致したと言っていい、かな?
追記>
<追記>
![](https://blogimg.goo.ne.jp/user_image/0f/80/ac82e52c9f77c859d24bed6d419ed246.jpg?random=e14010c3587f2ef6c7d90c00eb5e3c5f)
たぶん、どっかにアラがありまくりだと思う。
追記>
Quartz Composerのビューアの絵を表示しているカメラは、画面の幅(というかイメージプレーンの幅)が2で、FOVが60度になるように設定されていると。だから、カメラの位置は1/tan(60/2)ってことになると。
という仮説から、以下のように組んでみました。
なんとなくうまく動いているように見えます。
この考え方を基本に、いじっていくかな…。
<追記>
SI上で同じ値のカメラとオブジェクトを置いて、絵を重ねてみた。
![](https://blogimg.goo.ne.jp/user_image/66/6d/8a7bcc7afc6bd27b453add7cce1f56cd.jpg?random=c35eb64bd920f80bfb7c0134aa412935)
一致したと言っていい、かな?
追記>
<追記>
![](https://blogimg.goo.ne.jp/user_image/0f/80/ac82e52c9f77c859d24bed6d419ed246.jpg?random=e14010c3587f2ef6c7d90c00eb5e3c5f)
たぶん、どっかにアラがありまくりだと思う。
追記>
コメント ( 0 )|Trackback ( )
にゅーとんほう
sansu |2011-10-20
モルワイデ図法を表す式は、ただしソースはウィキペディアによると、地球の半径を1とし、地図にしたときの赤道上の縮尺を1にする場合、経度をλ、緯度をΦとして、
![](https://blogimg.goo.ne.jp/user_image/5a/05/2f007bfbd022a4994044d3ce67866010.jpg?random=90e9906774f590cb26411736cd76fbbf)
ただし、θは
![](https://blogimg.goo.ne.jp/user_image/1b/d1/7d4e73cc422e26be03c34c84d97cad53.jpg?random=093be249f6c03d7fd4a5defcec20cd04)
を満たす値、との事です。λ、Φ、θ、いずれもラジアン単位です。
正距円筒図法をモルワイデ図法に変形する場合には、正距円筒図法の座標をそのまま経緯度の値に読み替える事が可能ですから、λとΦの値は明らかなので、θの値を出す事が出来ればOKという事になります。
んじゃ、θの値をどうやって出すか、というわけっすね。先のθの条件式の要素を全部片方に集めます。
![](https://blogimg.goo.ne.jp/user_image/6f/06/2ac0fbd7b042f2ee1711d5eedf3149aa.jpg?random=4167f547ab5e4ff1ca7fc0149c2587ee)
すなわち、
![](https://blogimg.goo.ne.jp/user_image/5c/fb/ab050e7e55cd20310a32868067155871.jpg?random=bcde6eff1a4ca8c65b856d66e0417ec7)
こいつのyが0になるときのxが分かればいいってことっすね。
ってことで、ニュートン法とやらを試します。
ニュートン法は、y = f(x) について y = 0の時の x の値を近似して導く事が目的の物のようですね。
求める点付近のx値 x0 について、yの値はf(x0)。この点における y = f(x)の接線がx軸と交わる時のxの値がx1。このときのyの値がf(x1)。この点における y = f(x)の接線がx軸と交わるときのxの値がx2・・・・・・
といった作業を繰り返すと、正しいxの値に収束していく、という考え方みたいです。もちろんすべての場合でこれが成り立つわけじゃないけど、今回の目的には使えそうです。
![](https://blogimg.goo.ne.jp/user_image/56/79/84254feaf4bd42928526c7f53007da6f.jpg?random=44ab90dad5c30d39a9df570a7bda9f05)
接線がx軸と交わる時のxの値は、x = xnの時の接線の式が
y - f(xn) = f'(xn) * (x - xn)
だから(だからぢゃねーよって感じだけど、検算するとちゃんとそうなったよ)、
xn+1 = xn - f(xn)/f'(xn)
ってことで組んだICE Treeはこんな感じ。
こいつのlatitudeと名付けたポートに緯度の値Φを入れてやって出てくる値は、
![](https://blogimg.goo.ne.jp/user_image/7c/44/31f246cc28d518da06079ba6cf543d4b.jpg?random=7144b1152725524d0f592ce8fe1abc90)
こんな感じで、ただしソースはウィキペディアに書かれている値とだいたい一致しまする。
初期値が0なので、ここの値の取り方やリピートの回数によって結果が変わりますけど、まぁ、だいたいこんな感じで、だいたいモルワイデ図法を作る事が出来ました。
![](https://blogimg.goo.ne.jp/user_image/65/cd/078ae24fb6299286f0a79c3bd1fdf24a.jpg?random=426236feaba66ccf2e443e647f7b1fd8)
モルワイデ図法
コメント ( 0 )|Trackback ( )
Quartz Composer の視点ってどこにあるの?
mac |2011-10-20
![](https://blogimg.goo.ne.jp/user_image/50/3c/c64baf15b5a37a75881fad6a533c8aa3.jpg?random=73a84b1d2ed6458f847d45858d025227)
これは、Quartz Composerで3Dのメッシュを配置し、3D transformのrotation Yにシステムタイムをぶち込んでぐるぐる回している図なんですけど、この時、このメッシュを見ているカメラはどこにいるんでしょうか?
つまりカメラを作る方法を知りたいのですけどねー。
きちんと視点を数値で制御できるようにしたいわけですよ。
それ以前に、Quartz Composerに関する理解が全くないなされていない僕の頭をどうにかしておく必要はあるけど。
コメント ( 0 )|Trackback ( )
・