Нахождение координат точки между двумя точками?

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

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

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

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

4 ответа

Решение

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

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))

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

P + r(Q - P) = X

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

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

Это оно!

РЕДАКТИРОВАТЬ:

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

d² / euclidian_square_distance(P,Q) = r

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

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

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

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

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

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

Линия, соединяющая точки в 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 уравнения, чтобы получить значение очков.

Другие вопросы по тегам