目次
UI
今回は[nodes]を使用します。
準備
オブジェクトを配置したらインスペクターを開いてください。
Nodes > Number of Nodesを「2」に、
nodes > Node Sizesは「0. 0.」にします。
この2つのノードを使用し、距離と角度を出していきます。
ノードの座標を取得する
[nodes]の第2アウトから[route node]と[route 1 2]で各ノードの情報を取り出せます。[route 1 2]のように1始まりなことに注意してください。
ノードの情報は「X Y サイズ アクティブかどうか」の形式で出力されます。
[route 1 2]から[unpack 0. 0.]で各ノードの座標のみを取得します。
ノード1から見たノード2の座標を求める
今回はノード1から見たノード2の座標を求めます。
各X,Yの距離を「ノード2 – ノード1」で計算すると、ノード1を(0,0)としたときのノード2の座標が求められます。
直交座標系を極座標系に変換する
X,Yで表せるような座標系を「直交座標系」と呼び、距離と角度で表せるようなものを「極座標系」と呼びます。Maxにはこの両者を変換する便利なオブジェクトがあります。
[cartopol]を使用すると距離と角度を求められます。
通常のXY座標とMaxのUI座標はYの方向が逆のため、マイナス方向になっていることに注意してください。
ちなみに[poltocar]で直交座標に戻すことも可能です。
距離によってノードのサイズを変更する
ここからはおまけですが、[cartopol]を使用して距離を求められましたので、この数値を使ってノードのサイズを変更してみましょう。
「setsize ノード番号 サイズ」のメッセージをノードに送ると、指定したノードのサイズを変更できます。今回はノード1のサイズを変更したいので図のように作りましょう。
[metro 100 @active 1]で定期的に情報を出力します。 (ちなみに[pack]ではなく[pak]を使用すると、ノードの情報がスタックしてしまいます。)
これでノード同士の距離に応じてノード1のサイズが変更されるようになりました。UIを操作して確かめてください。