Frage

Ich habe eine Linie, die in 3d besteht, die zwischen zwei bekannten Punkten ist. {X1, Y1, Z1} und {X2, Y2, Z2}

Ich weiß auch, dass ich eine gewisse Distanz bin für einen der Punkte: D

Wie kann ich feststellen, was die Koordinaten des Punktes, wo ich nach D bewegt bin von {X1, Y1, Z1}?

Danke

War es hilfreich?

Lösung

Angenommen, Sie den Abstand D von Punkt 1 bis Punkt verschieben möchten 2:

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

Der Zeilenvektor kann wie folgt beschrieben werden:

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

Die Länge der Linie kann wie folgt bestimmt werden:

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

Die Versor auch bekannt als der Einheitsvektor der Linie kann wie folgt bestimmt werden:

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

Der Zielpunkt PD kann wie folgt bestimmt werden:

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

Bitte beachten Sie, dass P1 und v Vektoren und D ist ein Skalar

Andere Tipps

Zuerst bestimmen die Länge des Liniensegments:

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

Sie bewegen sich D von P1 = (X1, Y1, Z1) in Richtung P2 = (X2, Y2, Z2). Damit sind Sie an dem Punkt (X3, Y3, Z3):

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

Wenn Sie erweitern, dass in drei Gleichungen, eine für jede der X-, Y- und Z.

Das funktioniert, weil Sie D / d des Weges zwischen P1 und P2 sind. Check: Say D = d. Dann sollten Sie genau P2 sein.

Nehmen Sie den Vektor zwischen den beiden Punkten

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

Drehen Sie, dass in einen Einheitsvektor in der gleichen Richtung, aber mit der Länge 1. Sie tun, indem Sie durch den Abstand zwischen den beiden Punkten Dividieren:

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

Dann multiplizieren Sie diese mit D und zu Ihrem ursprünglichen Punkt hinzufügen, um den neuen Punkt.

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

Dies ist eine lineare Kombination Problem:

dist = Abstand (p1, p2)

Abstand D ist gegeben

f = D / Dist (fraktionelle des Koordinatenpunkt D innerhalb LineSeg (p1, p2)

pD = LinearCombo (1-F, p1, f p2) (Koordinaten des Punktes Abstand D von p1)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top