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

How can I find points at an equal distance between 2 objects?

我试图在 3D space 中找到其他 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 个定位器,但它们不在 3D 中连接两点的线上 space。

谁能指出我正确的方向?

当您计算两点之间的距离时,您会得到一个 标量 ,本质上是一个数字,表示两点之间的距离单位数。但是您没有得到的是从一个到另一个的方向。那将是一个 向量 。要获取向量,请更改此行:

distance = point_1.distanceTo(point_2)

对此:

difference = point_2 - point_1

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

几乎奇迹般地,只要将变量 distance 替换为 difference

,脚本中的所有其他代码都可以正常工作