3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

2点間の距離の取得関数ってないの?

python、ベクトル
とかでぐぐっても何も出てきませんでした。
二点間の距離を返す関数とかあるんでしょうかね。

MELにはmag関数というものがあります。
それは二点間の距離を返してくれます。

やりたいことはジョイント間の距離を測るだったのですが…
Pythonにはmag関数みたいなのがなさげだったので計算式で出してみました。

import pymel.core as pm
import math
from decimal import *
selObj = pm.ls(sl=True)
powVector = pow(selObj[1].getTranslation() - selObj[0].getTranslation(),2)
vectorMag = Decimal(str(math.sqrt(powVector[0] + powVector[1] + powVector[2])))
print Decimal(vectorMag).quantize(Decimal('.00000'), rounding=ROUND_HALF_UP)

ちなみにMELだとこんな感じです。

$getObj = `ls -sl`;
vector $obj1Pos = `xform -q -t $getObj[0]`;
vector $obj2Pos = `xform -q -t $getObj[1]`;
vector $defObjPos = $obj1Pos - $obj2Pos;
mag($defObjPos);

Pythonでroundを使って丸めようと思ったのですが…
丸まりませんでした(^^;

いろいろググッてみたらroundもなんか問題があるみたいですね。

といって私はPythonに凄い詳しい!
ってわけでも全然わかりませんでしたが(笑)