Bestimmen Sie Punktkoordinaten in 3D
-
08-07-2019 - |
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
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)