# Schnitt von 2 Geraden



## VipViper2000 (16. Jan 2007)

Hey Leute,

also ich hab derzeit ein Problem: Und zwar muss ich den Schnittpunkt von 2 Geraden berechnen, die in der Zweipunkteform vorliegen. Beim berechnen der Geradengleichungen habe ich ja jetzt das Problem mit Waagerechten Geraden.

Könnt ihr mir da mal nen Tip geben? Ich kann zwar toll prüfen ob 2 Geraden sich schneiden, aber ich den Punkt haben, wo sie sich schneiden.

Danke und Gruß,
VipViper2000


----------



## Wildcard (16. Jan 2007)

VipViper2000 hat gesagt.:
			
		

> Beim berechnen der Geradengleichungen habe ich ja jetzt das Problem mit Waagerechten Geraden.


Da gibts in einer 2D Ebene nur 2 Möglichkeiten:
1. Sie sind identisch
2. Sie sind parallel und schneiden sich nicht.

Was hat das eigentlich mit Java zu tun?
Gehört wohl eher zu Mathe  ???:L


----------



## Ark (16. Jan 2007)

Dazu gibt es z. B. Vektorrechnung. Für eine Gerade durch zwei Punkte A und B gilt:
x = xa + r * (xb-xa)
y = ya + r * (yb-ya)

Du kannst auch mit Gleichungen der Form
y = m * x + n

arbeiten, wobei m der Differenzenquotient
m = (yb-ya) / (xb-xa)

ist, usw. Mit Matrizen und Determinanten kann man auch arbeiten. In welcher Form hättest Du es denn gerne?

MfG
Ark


----------



## Beni (16. Jan 2007)

Ein bisschen runterscrollen: http://www.java-forum.org/de/viewtopic.php?t=7220 :wink:


----------



## Guest (16. Jan 2007)

@Wildcard

Sorry, klar ist natürlich eine eher mathematische Frage. Sie ziehlte aber darauf ab, dass es vllt. eine Klasse / Methode in Java gibt die das für mich übernimmt. Ausserdem gibt es bei Geraden nicht nur 2 Möglichkeiten in der Ebene: Sie können nämlich auch Windschief sein .

@Ark

Keine Angst - so schlecht bin ich in Mathe nicht  :lol: Das Problem ist ganz einfach wenn eine Gerade parallel zur Y-Achse steht. 

@Beni

Genau das schaue ich mir jetzt mal an. Das wird mir weiterhelfen denke ich. Danke dir.


----------



## Wildcard (16. Jan 2007)

Anonymous hat gesagt.:
			
		

> Ausserdem gibt es bei Geraden nicht nur 2 Möglichkeiten in der Ebene: Sie können nämlich auch Windschief sein .


Keine wie du schreibst 'waagerechten' Geraden  :wink:


----------



## FelixB (16. Jan 2007)

Anonymous hat gesagt.:
			
		

> Ausserdem gibt es bei Geraden nicht nur 2 Möglichkeiten in der Ebene: Sie können nämlich auch Windschief sein .



ach? kannst du mir da mal ne Skizze malen? Ich kenne nur windschiefe Geraden im dreidimensionalen Raum, nicht in einer Ebene...


----------



## Leroy42 (16. Jan 2007)

Die will ich jetzt aber auch sehen!


----------



## Ark (16. Jan 2007)

Anonymous hat gesagt.:
			
		

> Keine Angst - so schlecht bin ich in Mathe nicht  :lol: Das Problem ist ganz einfach wenn eine Gerade parallel zur Y-Achse steht.





			
				VipViper2000 hat gesagt.:
			
		

> Beim berechnen der Geradengleichungen habe ich ja jetzt das Problem mit Waagerechten Geraden.


:shock:

Keine Ahnung, wohin Deine Achsen zeigen …




			
				VipViper2000 hat gesagt.:
			
		

> Ich kann zwar toll prüfen ob 2 Geraden sich schneiden, aber ich den Punkt haben, wo sie sich schneiden.


Wenn Du weißt, _dass_ sie sich schneiden, dann weißt Du auch, _wo_ sie sich schneiden. :meld:
:arrow: Her mit Deinem bisherigen Code!

MfG
Ark

P.S.: Die windschiefen Geraden möchte ich auch sehen. :lol:


----------



## Gast (17. Jan 2007)

Wenn eine gerade parallel zur Y-Achse ist, dann ist es keine Funktion mehr. Und beim Schneiden merkt man dann auch warum.


----------



## FelixB (17. Jan 2007)

Gast hat gesagt.:
			
		

> Wenn eine gerade parallel zur Y-Achse ist, dann ist es keine Funktion mehr. Und beim Schneiden merkt man dann auch warum.



???

g1: x=10 parallel zur Y-Achse
g2: y = f(x) irgendwas anderes

dann ist der Schnittpunkt mit gerade g2: y = f(x) in jedem Fall (10, f(10) )

falls g2 auch parallel zur Y-Achse, dann ist auch g1 || g2


----------



## Ark (17. Jan 2007)

1. Es stimmt, dass x=10 keine Funktion ist.
2. Eine Funktion muss sich nicht unbedingt mit x=10 schneiden:

f(x) = 1/(10-x)

Diese Funktion ist für x=10 nicht definiert.


Aber das spielt in der Vektorrechnung sowieso keine Rolle — und auch nicht in diesem Fall, es geht ja um Geraden. :lol:

Na ja, wie gesagt, es wäre gut, wenn Du uns denn Deinen bisherigen Ansatz zeigen würdest.

MfG
Ark


----------



## FelixB (18. Jan 2007)

Ark hat gesagt.:
			
		

> Aber das spielt in der Vektorrechnung sowieso keine Rolle — und auch nicht in diesem Fall, es geht ja um Geraden. :lol:



ich war jetzt nur etwas verwirrt, dass er auf einmal mit Funktionen ankommt - erst ging es ihm doch zunächst lediglich um Geraden


----------



## ChaosE (18. Jan 2007)

Gast hat gesagt.:
			
		

> Wenn eine gerade parallel zur Y-Achse ist, dann ist es keine Funktion mehr. Und beim Schneiden merkt man dann auch warum.



Also, um das Antwortenkuddelmuddel hier etwas zu entwirren.

Eine Gerade, die parallel zur Y-Achse verläuft, ist natürlich auch eine Funktion. Nur nicht über x - sondern halt über y. Ist auch völlig irrellevant für die ursprüngliche Frage, wo es um eine Gerade in 2-Punktdarstellung geht. Die Lösung dafür ist wie folgt:

Jede Gerade wird durch zwei Punkte definiert. Sei A = (x1, y1) und B = (x2, y2) die zwei Punkte der ersten Gerade.

Steigung für beide Geraden berechnen: (y2-y1) / (x2-y1)
Fallunterscheidung: Steigung gleich ?
[list:2f218d3ede]
 Ja: Parallel oder Identisch
 Nein: 2 Punkt-Darstellung in normale Geradengleichung umformen: g = A + d(B-A), d aus *R*
Zwei Gleichungen, zwei Unbekannte -> einfaches Gleichungssystem.
[/list:2f218d3ede]
Ist einfach zu programmieren, bedarf nur ziemlich vieler Fallunterscheidungen die man zuerst gerne übersieht (z.B. bei den schon erwähnten Geraden die parallel zur Y-Achse verlaufen, also immer prüfen ob x2-x1 nicht Null ist). Außerdem weisst Du nichts über die Reihenfolge der Punkte, die sollten der Einfachheit halber vorher immer so sortiert werden das x2>x1 gilt, um weitere Fallunterscheidungn zu vermeiden.

Die Frage hat aber in der Tat so ziemlich gar nichts mit Java an sich zu tun sondern nur mit linearer Algebra 

MfG;
ChaosE


----------



## Ark (18. Jan 2007)

ChaosE hat gesagt.:
			
		

> Außerdem weisst Du nichts über die Reihenfolge der Punkte, die sollten der Einfachheit halber vorher immer so sortiert werden das x2>x1 gilt, um weitere Fallunterscheidungn zu vermeiden.


Das ist egal, da das Vorzeichen des Differenzenquotienten von beiden Differenzen abhängt, weil es eben ein Quotient ist.
(y2-y1) / (x2-x1) = - (y1-y2) / (x1-x2)

Oder anders ausgedrückt:
(a-b) / (b-a) = -1




			
				ChaosE hat gesagt.:
			
		

> Die Frage hat aber in der Tat so ziemlich gar nichts mit Java an sich zu tun sondern nur mit linearer Algebra


Stimmt auffallend. 

MfG
Ark


----------

