【Max】2点間の距離と角度を求める

記事をシェアする:

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を操作して確かめてください。

記事をシェアする: