« 山経由、会社へ | トップページ | エサ »

2010年11月 6日 (土)

螺旋&望遠鏡

何日か前の記事で、ひも理論のひもの動きをCGで作るためのスクリプトを書いたなんてことを書きましたが、よくよく考えてみたら、わざわざスクリプトを書かなくてもMayaのノンリニアデフォーマーでできることが判明。時間の無駄でした(苦笑)。下記は、銀河系を作るために書いた螺旋カーブを生成するMELスクリプト。銀河の形は対数螺旋で、螺旋上の任意の点の中心からの距離"r"は、定数"B"のΘ乗で求められます。"r"と"B"をそれぞれ変数$r、$Bとするとスクリプトは下記のようになります。

float $B = 3;
float $scale = 0.01;
float $div = 5; string $cmd = "curve -d 1 ";
float $r, $x, $y, $v; for($i = 0; $i <= 200; $i++) {    $v = deg_to_rad($i*$div);    $r = pow($v, $B);    $x = $r*cos($v)*$scale;    $y = $r*sin($v)*$scale;    $cmd = ($cmd+"-p "+$x+" "+$y+" 0 "); } eval($cmd);

$Bは1以外の正の数とします。2行目、3行目は螺旋の形状を決めるためのパラメータで、この数値を変えると螺旋の巻き数やCVの間隔等が変わります。4行目はNurbsカーブを生成するコマンドの最初の部分。これに、for文で生成された文字列が追加され、最後のevalコマンドで実行されて、螺旋カーブが作られます。for文の一行目は"deg_to_rad"で$iをラジアンに変換。2行目でそれを$Bに累乗します。これでΘが$vのときの中心からの距離$rが決まりますので、この点を(x, y) = ($r, 0)と見なし、これをさらに$v度回転させて、最終的なCVのXY座標を求めています(for文の3、4行目。三角関数の公式を利用)。

話は変わって天体望遠鏡が届きました。

110601

さっそく昨晩組み立てて星を見てみたのですが・・・・・・・んー、当然ですが、さすがにこのレベルの望遠鏡ではハッブル望遠鏡やすばる望遠鏡のようには見えないですね(苦笑)。オリオン大星雲も見てみましたが、写真で見るような色はついてませんでした。とは言え、もちろん肉眼よりははるかによく見えるわけですから、これから写真撮影のトライも含め、色々見てみようと思います。

|

« 山経由、会社へ | トップページ | エサ »

CGのこと」カテゴリの記事