2016-02-09 48 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权。有时候我觉得我完全理解矢量数学的概念,然后就会显示出来:) –

相关问题