如何找到两个物体之间相等距离的点?

时间:2016-02-09 00:55:28

标签: math vector maya pymel

我正在尝试在3D空间中的其他两个点之间找到相等距离的点。例如,我的场景中有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个定位器,但它们不在连接3D空间中两个点的线上。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

当你计算两点之间的距离时,你得到一个标量,基本上是一个数字,即点相互远离的单位数。但是你没有得到的是从一个到另一个的方向。这将是 vector 。要获取向量,请更改此行:

distance = point_1.distanceTo(point_2)

到此:

difference = point_2 - point_1

现在不是获得两个点之间的单个单位距离,而是获得一个具有三个轴的每个所需距离的向量。

几乎奇迹般地,如果您只是将变量distance替换为difference

,则脚本中的所有其他代码都将有效