如何找到两个物体之间距离相等的点?
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
,脚本中的所有其他代码都可以正常工作
我试图在 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