Schneiden sich zwei Linien?

Hallo,

ich finde es ist schon fast peinlich zu fragen, aber schaue gerade etwas verwirrt aus der Wäsche, wenn ich versuche festzustellen, ob sich zwei definierte Linien schneiden!

Folgende Konstellation:

Linie 1 mit Punkt 1 (x,y) und Punkt 2 (x,y)
Linie 2 mit Punkt 1 (x,y) und Punkt 2 (x,y)

Das ganze versuche ich in der Programmiersprache Java zu implementieren… naja Betonung auf versuchen…

Wo der Schnittpunkt stattfindet ist egal, es reicht nur ein ja oder nein!

Klar, man kann es auch richtig aufbauschen und 100 Zeilen von Code füllen um irgendwie „improvisiert“ eine Lösung zu finden. Aber das Problem scheint mir so simple, dass es da doch auch eine simple Lösung geben muss, ohne daraus gleich eine Wissenschaft für sich zu erstellen?

Gruß,
Peter

Moien

Das ganze versuche ich in der Programmiersprache Java zu
implementieren…

Wieso ?

java.awt.geom.Line2D.linesIntersect ( … )

Aber das Problem scheint mir so simple, dass es da doch auch
eine simple Lösung geben muss

Der Code zu der Methode findet sich in der Datei rt.jar im SDK-Verzeichnis.

cu

Hallo,

festzustellen, ob sich zwei definierte Linien schneiden!

Du kannst doch einfach die Formel herleiten.

Die eine Linie g verläuft durch die Punkte A und B,
die andere Linie h durch C und D.

a , b , c , d seien die Ortsvektoren der Punkte A, B, C, D.

Dann gilt ("{}" = Menge aller Punkte):

g = { a + λ ( ba )  mit λ ∈ R}

h = { c + σ ( dc )  mit σ ∈ R}

Dabei ist λ ∈ [0, 1], wenn sich der g-Geradenpunkt zwischen den Punkten A und B befindet; für σ analog.

Der Schnittpunkt von g und h ist gegeben durch

a + λ ( ba ) = c + σ ( dc )

Das ist ein lineares Gleichungssystem mit zwei Gleichungen für die beiden Unbekannten λ und σ:

xA + λ (xB – xA) = xC + σ (xD – xC)

yA + λ (yB – yA) = yC + σ (yD – yC)

oder mit ΔxPQ := xP – xQ, ΔyPQ := yP – yQ

ΔxAB λ – ΔxCD σ = ΔxAC

ΔyAB λ – ΔyCD σ = ΔyAC

Die Lösung ist:

λ = (ΔxAC ΔyCD – ΔxCD ΔyAC) / D

σ = (ΔxAC ΔyAB – ΔxAB ΔyAC) / D

mit  D = ΔxAB ΔyCD – ΔxCD ΔyAB

g und h schneiden sich genau dann „innerhalb“ der Punkte A, B, C, D, wenn λ ∈ [0, 1] und σ ∈ [0, 1].

Keinen Schnittpunkt gibt es (g und h parallel), wenn D = 0 ⇔ ΔxAB ΔyCD = ΔxCD ΔyAB.

Gruß
Martin

ich finde es ist schon fast peinlich zu fragen, aber schaue
gerade etwas verwirrt aus der Wäsche, wenn ich versuche
festzustellen, ob sich zwei definierte Linien schneiden!

Wo der Schnittpunkt stattfindet ist egal, es reicht nur ein ja
oder nein!

Hallo Peter,

nach der Definition „Parallelen schneiden sich im Unendlichen“ lautet die Antwort sowieso immer ja.

Wenn man sich aufs Endliche beschränkt, muss man nur die Steigungen ausrechnen: ungleich -> sie schneiden sich. Bei gleicher Steigung sind die Geraden parallel oder identisch, letzeres gilt, wenn für X = 0 (oder irgendeinen anderen Wert) y1 = y2 ist.

Gruss Reinhard