2009-09-17 5 views
0

У меня есть строка, которая существует в 3d, которая находится между двумя известными точками: {X1, Y1, Z1} и {X2, Y2, Z2}.Определение координат точек в 3D

Я также знаю, что я на некоторое расстояние для одной из точек: D

Как я могу определить, что координаты точки, где я после переезда D из {X1, Y1, Z1}?

Благодаря

+0

Да? Я вообще не понимаю ваш вопрос. –

+0

Меня нет, все становится размытым после части D – Maciek

+0

Я думаю, что он означает перемещение D от точки 1 к точке 2. –

ответ

3

Предполагая, что вы хотите, чтобы переместить расстояние D от точки 1 до точки 2:

P1 = [ X1, Y1, Z1 ] 
P2 = [ X2, Y2, Z2 ] 

Вектор линии может быть описан как:

V = P2 - P1 = [ Xv = X2 - X1, Yv = Y2 - Y1, Zv = Z2 - Z1 ] 

длина линии может быть определена как:

VL = SQRT(Xv^2 + Yv^2 + Zv^2)  // ^2 = squared 

versor линии ака орта может быть определена как:

v = V/VL = [Xv/VL, Yv/VL, Zv/VL] 

Целевая точка PD может быть определена как:

Pd = P1 + D * v // Starting from P1 advance D times v 

Пожалуйста, обратите внимание, что P1 и v являются векторами и D является скаляром

1

Во-первых, определить длину отрезка:

d=sqrt((X1-X2)^2+(Y1-Y2)^2+(Z1-Z2)^2)) 

Вы движетесь D от P1 = (X1, Y1, Z1) в направлении Р2 = (X2, Y2, Z2) , Это ставит вас в точке (X3, Y3, Z3):

{XYZ}3={XYZ}1+(D/d)*({XYZ}2-{XYZ}1}) 

Где вы расширяете, что в 3-х уравнений, по одному для каждой из осей X, Y и Z.

Это работает, потому что вы D/d пути между P1 и P2. Проверьте: Скажите D = d. Тогда вы должны быть ровно в P2.

0

Возьмите вектор между двумя точками

<X2-X1, Y2-Y1, Z2-Z1> 

Turn что в единичный вектор в том же направлении, но с длиной 1. Вы делаете это путем деления расстояния между двумя точками:

  <X2-X1, Y2-Y1, Z2-Z1> 
--------------------------------------- 
sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2) 

Затем умножьте это на D и добавьте к исходному пункту, чтобы получить новую точку.

      <X2-X1, Y2-Y1, Z2-Z1> 
(X1, Y1, Z1) + D * --------------------------------------- 
        sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2) 
0

Это является линейной комбинацией проблема:

расстояние = расстояние (p1, p2)

расстояние D задается

F = D/DIST (дробное координата точки D в пределах LineSeg (p1, p2)

PD = LinearCombo (1-е, р1, е, р2) (координаты точки расстояния D от p1)