Etwas 3D-Zeug in wpf- zu machen, wollen einen einfacheren Test verwenden, um zu sehen, ob alles funktioniert (bevor man in Kurven übergeht).
Die Grundfrage ist gegeben zwei Punkte x1, y1, z1 und x2, y2, z2 Ich habe den Abstand zwischen den Punkten berechnet. Aber wie findet man die Koordinaten eines anderen Punktes (x3, y3, z3), der in einiger Entfernung auf dieser Linie liegt?
i.e. Wenn meine Linie 100 lang zwischen -50,0,0 und 50,0,0 ist, wie lauten die Koordinaten des Punktes bei 100 * 0,1 entlang der Linie?
Ich denke, das ist eine einfache Formel, aber ich habe es noch nicht gefunden ....
Für jedes p zwischen 0 und 1 erhalten Sie einen Punkt auf dem Liniensegment:
%Vor% Das hat mit Mathe zu tun, aber ok. Lassen Sie P
und Q
die zwei gegebenen Punkte und X
den Punkt, den Sie suchen.
r gibt einen Faktor an.
if 0 < r < 1
: Der Punkt x befindet sich auf der Linie zwischen den beiden Punkten.
Das ist es!
BEARBEITEN:
Um einen Punkt in einem gegebenen Abstand d von P (p1 / p2 / p3) zu finden:
%Vor%Fügen Sie r in die oben genannte Gleichung ein und Sie werden Ihren Standpunkt haben! :)
PS: BTW: P-Q = (Px - Qx, Py - Qy, Pz - Qz)
... Ich wette, du weißt es schon:)
Lassen Sie t
von 0 bis 1 variieren. Verwenden Sie Folgendes:
(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)
Wenn t = 0 ist, erhalten Sie den ersten Punkt. Wenn t = 1, erhalten Sie die zweite.
Diese Methode wird lineare Interpolation genannt.
Eine Linie, die die Punkte in 3d verbindet, ist gegeben durch die Gleichung:
(x - x1) / (x2 - x1) = (y - y1) / (y2 - y1) = (z - z1) / (z2 - z1)
Sie haben die Werte von x1, y1, z1, x2, y2, z2. Dadurch erhalten Sie eine Gleichung für die Linie.
Eine andere Gleichung wäre
((x-x1) ^ 2 + (y-y1) ^ 2 + (z-z1) ^ 2) ^ (1/2) = Entfernung
Löse die 2 Gleichungen, um den Wert der Punkte zu erhalten.
Tags und Links wpf math linear-algebra