2016-02-09 3 views
1

Я пытаюсь найти точки на равном расстоянии между двумя другими точками в 3D-пространстве. Например, у меня есть 2 куба в моей сцене. Я хочу добавить 5 (или 3 или 80 ...) локаторов на равном расстоянии между этими двумя сферами с помощью Pymel.Как найти точки на равном расстоянии между двумя объектами?

я могу легко найти полпути между сферами, как это:

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-пространстве.

Может ли кто-нибудь указать мне правильное направление?

ответ

2

Когда вы вычисляете расстояние между двумя точками, вы получаете скаляр , по существу, единственное число, которое представляет собой количество единиц, находящихся далеко друг от друга. Но то, что вы не получаете, - это направление от одного до другого. Это будет вектор. Для того, чтобы получить вектор, измените эту строку:

distance = point_1.distanceTo(point_2) 

к этому:

difference = point_2 - point_1 

Теперь вместо того, чтобы единая единица измерения расстояния между двумя точками, вы получаете вектор с расстоянием, требуемым для каждый из трех осей.

Почти чудом, все остальные код в ваш скрипт будет работать, если вы просто заменить переменную distance с difference

+1

ARGH ... ты absolutey прав. Иногда мне кажется, что я полностью понимаю концепцию векторной математики, а потом что-то вроде этого появляется :) –

 Смежные вопросы

  • Нет связанных вопросов^_^