はじめに
あまり数学に詳しくないので数学の基本とSverchokの勉強ができないかと思ってたら見つけたページ。
Matrixといえば勝手にアフィン変換などを期待したが、ここではViewer Draw Mk3やMatrix Applyにある Matrix ソケットに接続しポリゴンを Matrix 情報に基づいてクローンする手法を解説している。
参照元
サンプルファイル 放物線
このサイト の下のリンクをクリックしたらダウンロードできるけど、開いてもエラーとなってしまい現在は使えない。
サンプルファイルの内容と同等の内容がこちら。
ポリゴン情報
- 頂点数 81
- 面 1
読み解く
現在は面がある状態だが、より確認しやすくする為に Faces の接続を解除する
Matrixの最初においてある Number Range のパラメータを色々変えてみて変化を見てみる。
初期で設定されている
start = 0、stop = 120, step = 15
は Stethoscope(聴診器)で見てみると[[0, 15, 30, 45, 60, 75, 90, 105]]
という配列長8の配列が作られている事がわかる。これを Vector In のZ に入れると 8つのベクトルができ、それを Matrix in に入れるとそのまま 8つのマトリックスが出来る。それを Viewer Draw Mk3 に入れると元々の頂点を0 ~ 105度Z回転させた8つのクローンが出来上がる。
Matrix Inの接続先を Locationに変えてみる
今度は放物線の場所がZ軸で8回移動された事がわかる。それぞれ約15単位で移動されている。
次に Location の Vector Inを Y軸に接続し、Number RangeはStopの値で標準化するため、A Numberを配置し120に設定。Scalar Math を配置し図の用に接続して標準化する。その後 Vector Inに接続し Matrix In に接続する
中心(0,0,0) に近いほどxとzが小さく、遠いほど大きいことがわかる。
この放物線をグリッドフロア上に配置する場合は、Matrix Deformを使用してここのマトリックスを変形し、Z位置を上にオフセットさせる事が出来る
パラメーターで正弦波
Number Rangeを使う事で自分の好きなポイント数を持つ独自のデータを作ることが出来る。
- Start と Stopを調整してポイントが中心に来るようにする
- Stopを11としているのは自身を含まない非包括的(Non-inclusive)な配列のため
sin波を加える
UV Connectionを使って辺を作成する
パラメータで円
- Number Range
- start 0 から stop 6.28(2 * pi)までstep = (6.28/point数)で配列を作成する
- Number Rangeから出てきた数をScalar Mathの Sin & CosでSinとCosを計算してVector Inに接続
- UV Connectionで点から辺を作成
- Cycle U を有効にして辺を閉じるようにする
この円から面を作るには上の方で出てきた放物線のような配列を作成する
- 上記の例では頂点は10個ある為、
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
のような配列が必要 - しかし Sverchokの仕様か実際に必要な配列は
[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]
という三次元配列 - Number Rangeでintの配列を作り Step start 0 から step 1でcount 10とすれば
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
という配列が出来る - 上記を3次元にするために List Join で接続し wrap にチェックを入れる。
- その結果をViewer Drawに接続すると面が出来上がる
次に matrix を使ってクローンする
これは非常に単純明快なものですが、理解するために重要な概念