2015年7月19日日曜日

ダイナモ白熱教室(7)~点-線-面

前回作成したコサインカーブのZ座標をXY平面の座標に割り当ててみます。前回の最後のグラフは次のようになっていました。
このグラフでできたCosカーブをすべての座標に割り当てる

Point.Add / Vector.ByCoordinates

点にベクトルを与えて新しい点を作成するノードです。引数は

  • point
  • vectorToAdd

の二つで、pointは前々回に作成した、XY平面上(Z=0)の点のリストで、vectorToAddは前回のコサインカーブを基に新たに作成します。

VectorByCoordinatesのノードを追加し、下の図の水色の部分のようにZにつなぎます。
Zベクトルを作成
このベクトルを各点に割り当てます。まず、上図のピンク色のPoint.ByCoordenatesノードの右下の□をクリックし、リストを表示します。次にそのリストの最初の[0]Listを選択すると、背景の3Dビューに[0,0]などのインデックスが表示され、最初のリストがどこにあるのかを目視確認できます。
リストの所在が確認できる
この列に対して、コサインカーブを割り当てます。

List.Map

ベクトルを加算するリストは2次元配列になっています。この1次元側にZベクトルを加算します。この場合List.Mapを使い、各リストに処理をマッピングします。

  • Point.Add
  • List.Map

を追加し、次の図のように接続します。
List.Map
結果は下の図のようになります。
Y方向にコサインカーブを割り当て

List.Transpose

今度はX方向にコサインカーブを割り当ててみます。ピンク色の部分のPoint.ByCoordinatesからは[X,Y]のリストが出てくるので、これを反転して[Y,X]のリストにしてマップします。リストのX、Yを入れ替えるにはエクセルでもおなじみのTransposeノードを使用して、下の図のようにつなぎます。
Transpose
結果は・・・
X方向にコサインカーブを割り当て

NurbsCurve.ByPoint

この点を結んで曲線を作成し、さらに面を張ってみましょう。まずは

  • NurbCurve.ByPoint

を追加し、List.Mapに接続します。すると、各リストがつながって曲線として表示されます。
NurbsCurve.ByPoints

Surface.ByLoft

曲線をつないで面を作成します。

  • Surface.ByLoft

を追加し、NurbsCurve.ByPointsに接続すると、面が作成できます。
X方向にコサインカーブを割り当てた面の作成

Transposeを使わない最初のバージョンであれば

Y方向にコサインカーブを割り当てた面
ここでは「点」→「線」→「面」の基本的な流れを説明しました。