Выполнение некоторого 3D материала в wpf-хочет использовать более простой тест, чтобы видеть, работает ли все (прежде чем перемещение в кривые).
Основному вопросу дают две точки x1, y1, z1 и x2, y2, z2 я вычислил расстояние между точками. Но как найти координаты другой точки (x3, y3, z3), который находится на той строке на некотором расстоянии?
Т.е. если моя строка равняется 100 долго между-50,0,0 и 50,0,0, каковы координаты точки в 100 * 0.1 вдоль строки?
Я думаю, что это - простая формула, но я еще не нашел его....
Для каждого p от 0 до 1 это даст вам точку на отрезке линии:
(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
Пусть 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. Это даст вам уравнение для линии.
другое уравнение будет
((x-x1) ^ 2 + (y-y1) ^ 2 + (z-z1) ^ 2) ^ (1/2) = расстояние
Решите 2 уравнения чтобы получить значение очков.
Это связано с математикой, но ладно. Пусть P
и Q
будут двумя заданными точками, а X
точкой, которую вы ищете.
P + r(Q - P) = X
r указывает коэффициент.
if 0
Вот и все!
РЕДАКТИРОВАТЬ:
Чтобы найти точку на заданном расстоянии d от P (p1 / p2 / p3):
d² / euclidian_square_distance(P,Q) = r
Вставьте r в указанное выше уравнение, и вы поймете свою точку зрения! :)
P.S: Кстати: P-Q = (Px - Qx, Py - Qy, Pz - Qz)
... держу пари, вы уже знали это :)