Einzelnen Beitrag anzeigen

Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#2

Re: Kreuzungspunkt 2er Linien im 3D-Raum berechnen

  Alt 1. Jul 2005, 15:37
Erstmal machst du dir aus Start- und Endpunkt eine Geradengleichung:

g: x = (x0, y0, z0) + s(x1-x0, y1-y0, z1-z0)

Dann setzt du die Geraden gleich und löst das lineare Gleichungssystem auf.

Jetzt gibt es mehrere Fälle:
1) Die Geraden sind identisch
2) Die Geraden sind parallel
3) Die Geraden sind windschief
4) Die Geraden schneiden sich

In Fall 1) hast du unendlich viele Lösungen.
In Fall 2) hast du keine Lösung.
In Fall 3) hast du keine Lösung.
In Fall 4) hast du genau eine Lösung.

Du kannst leicht herausfinden ob die beiden Geraden parallel sind, indem du einfach deren Richtungsvektoren normierst und vergleichst. Sind sie identisch, so sind die Geraden parallel.

Wenn du zwei windschiefe Geraden hast, kannst du die beiden Punkte berechnen, die den kleinsten Abstand voneinander haben. Dazu betrachtest du zwei laufendene Punkte auf den Geraden.

Ein laufender Punkt auf der Geraden g wäre:
P(x0 + s(x1-x0) | y0 + s(y1-y0) | z0 + s(z1-z0))

Dann kannst du ja den Vektor zwischen den beiden laufenden Punkten betrachten. Das Skalarprodukt aus diesem Vektor mit dem Richtungsvektor einer Geraden muss 0 ergeben, dann steht der Vektor senkrecht zur Geraden. Damit kommst du schließlich auf die beiden Skalare s und r der Geradengleichungen, und somit auf die beiden Punkte auf den beiden Geraden, die den kleinsten Abstand zueinander haben.
  Mit Zitat antworten Zitat