Нахождение координат точки между двумя точками?
Делая некоторые 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 уравнения, чтобы получить значение очков.