Нахождение координат точки между двумя точками? - PullRequest
9 голосов
/ 22 мая 2010

Делая некоторые 3D-вещи в wpf, вы хотите использовать более простой тест, чтобы увидеть, все ли работает (до перехода к кривым).

Основной вопрос задается двумя точками x1, y1, z1 и x2, y2, z2. Я рассчитал расстояние между точками. Но как найти координаты другой точки (x3, y3, z3), которая лежит на этой линии на некотором расстоянии?

т.е. если моя линия 100 длинна между -50,0,0 и 50,0,0, каковы координаты точки в 100 * 0,1 вдоль линии?

Я думаю, что это простая формула, но я еще не нашел ее ...

Ответы [ 4 ]

15 голосов
/ 22 мая 2010

Для каждого p от 0 до 1, это даст вам точку на отрезке:

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
7 голосов
/ 22 мая 2010

Это связано с математикой, но хорошо. Пусть P и Q будут двумя заданными точками, а X точкой, которую вы ищете.

P + r(Q - P) = X

r обозначает фактор.

если 0 < r < 1: точка x будет находиться на линии между двумя точками.

Вот и все!

EDIT:

Чтобы найти точку на заданном расстоянии d от P (p1 / p2 / p3):

d² / euclidian_square_distance(P,Q) = r

Вставьте r в уравнение, упомянутое выше, и вы поймете свою точку зрения! :)

P.S .: Кстати: P-Q = (Px - Qx, Py - Qy, Pz - Qz) ... держу пари, ты уже знал, что это :)

1 голос
/ 22 мая 2010

Пусть t изменяется от 0 до 1. Используйте следующее:

(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)

Когда t = 0, вы получаете первую точку. Когда t = 1, вы получите второе.

Этот метод называется линейной интерполяцией .

0 голосов
/ 22 мая 2010

линия, соединяющая точки в 3d, дается уравнением:

(x - x1) / (x2 - x1) = (y - y1) / (y2 - y1) = (z - z1) / (z2 - z1)

У вас есть значения x1, y1, z1, x2, y2, z2. Это даст вам уравнение для линии.

другое уравнение будет

((х-х1) ^ 2 + (у-у1) ^ 2 + (г-г1) ^ 2) ^ (1/2) = расстояние

Решите 2 уравнения, чтобы получить значение баллов.

...