2016-02-09 110 views
1

我正在嘗試在3D空間中的2個其他點之間找到相等距離的點。例如,我的場景中有2個立方體。我想在這兩個球體之間用Pymel等距加5個(或3個,或80個)定位器。如何找到兩個物體之間的距離相等的點?

我可以很容易地找到這樣的球體之間的中間點:

import pymel.core as pm 
import pymel.core.datatypes as dt 

pos_1, pos_2 = pm.selected() 

point_1 = dt.Vector(pos_1.getTranslation()) 
point_2 = dt.Vector(pos_2.getTranslation()) 

midway_point = (point_1 + point_2)/2 

不過,我似乎無法弄清楚如何在這兩個領域之間的界限得到多個點。

我想是這樣的:

import pymel.core as pm 
import pymel.core.datatypes as dt 

pos_1, pos_2 = pm.selected() 

point_1 = dt.Vector(pos_1.getTranslation()) 
point_2 = dt.Vector(pos_2.getTranslation()) 

distance = point_1.distanceTo(point_2) 
divided_distance = distance/5 

for i in range (1, 5): 
    position = point_1 + (divided_distance * i) 
    pm.spaceLocator(position = position, absolute = True) 

這確實增加了這兩個領域之間的5個定位器,但他們不是在三維空間中連接兩個點的線。

任何人都可以指向正確的方向嗎?

回答

2

當你計算兩點之間的距離時,你會得到一個標量,實質上是一個單一的數字,即點之間相互距離的單位數。但是你沒有得到的是方向從一個到另一個。那將是一個載體。爲了得到載體,改變這一行:

distance = point_1.distanceTo(point_2) 

這樣:

difference = point_2 - point_1 

現在,而不是讓這兩個點之間的單個單元的距離,你要與所需要的距離向量各3個軸的

幾乎創造了奇蹟,在你的腳本中的所有其他代碼將工作,如果你只是difference

+1

哎呀替換變量distance ...你是absolutey權。有時候我覺得我完全理解矢量數學的概念,然後就會顯示出來:) –

相關問題