Schnitt zweier Ebenen ergibt Gerade

Knuffi

Mitglied
Ich hoffe jetzt mal, dass ich im richtigen Unterforum bin :)

Mein Ziel ist ein Programm für die Analytische Geometrie der Oberstufe (hab ich schon mal erwähnt).

Wenn ich zwei Ebenen miteinander schneide, gibt es im Normalfall eine Gerade. Wenn ich mir das ganze als Gleichungssystem in Parameterform anschaue, dann habe ich drei Gleichungen mit vier Unbekannten (oder eine mit zwei unbekannten bei einer Ebene in Normalen- und einer Ebene in Parameterform bzw. zwei Gleichungen mit drei unbekannten bei beiden Ebenen in Normalenform).

Ich hab schon ein wenig nach dem Lösen von Gleichungssystemen gesucht, bin aber bei einem unterbestimmten GLS noch nicht so richtig fündig geworden, da sollte ja ein Parameter übrig bleiben.

Ich habe vor, die Apache Commons Math zu verwenden, da sie mir auch gleich ein paar Werkzeuge für Vektoren an die Hand geben.
Leider finde ich nirgends gute Tutorials für diesen Fall.

Kann mir jemand den Weg zu einem Tutorial oder so weisen oder sonst irgendwie weiter helfen?
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Häh?

Eine (nicht-senkrechte) Ebene kann man mit z = ax+by darstellen, also hat man bei zwei Ebenen

Code:
z = a * x + b * y  //1. Ebene
z = c * x + d * y  //2. Ebene
a * x + b * y = c * x + d * y //Gleichsetzen
(b-d) y = (c-a) x
y = x* (c-a)/(b-d) //nach y Auflösen

z = a*x  + b*x* (c-a)/(b-d)
z = x * (b*(c-a)/(b-d) + a) //z in Abhängigkeit von x

Also für gegebenes x
y = x* (c-a)/(b-d)
z = x * (b*(c-a)/(b-d) + a)
 

Knuffi

Mitglied
Ich glaube in dem "für gegebenes x" liegt das Problem - denn wenn kein x gegeben ist, dann bekomme ich eine Gerade, ansonsten einen Punkt, oder?
Also hat die Lösung des Systems bei nicht gegebenem x einen Parameter. Und ich suche Verfahren in Java, die mir solche Lösungen ausspucken.
 

Landei

Top Contributor
Ich sehe gerade, ich habe mich vermacht. Aber deinen Einwand verstehe ich trotzdem nicht. x ist doch frei wählber. Eine 2D-Geradengleichung ist doch auch durch y = ax+b gegeben, oder?

Code:
z = a * x + b * y  + c //1. Ebene
z = d * x + e * y  + f //2. Ebene
a * x + b * y + c = d * x + e * y + f //Gleichsetzen
(b-e) y = (d-a) x + (f-c)
y = ((d-a) x + (f-c)) / (b-e)
z = a * x + b * ((d-a) x + (f-c)) / (b-e) + c
 

Knuffi

Mitglied
Schon klar, dass x frei wählbar ist, aber die Lösung ist zumindest zweidimensional - nämlich eine Gerade. Und DIE will ich irgendwie rausbekommen. Geht das mit dem Matrix-Paket von Common Maths nicht irgendwie?

Du verwendest im Prinzip von beiden Ebenen die Normalengleichung ax1 + bx2 + cx3 + d = 0. Dann hast du zwei Gleichungen und drei unbekannte, also ein unterbestimmtes System. Die Lösung ist (wenn sie nicht gerade identisch sind oder parallel liegen) eine Gerade, hat also einen Parameter übrig.
 

HimBromBeere

Top Contributor
Eine Gerade ist durch zwei Punkte genau definiert, richtig? Also rechne dir von der Geraden einfach zwei Punkte aus (welche ist völlig wurscht) und berechne darauf basierend Anstieg m und Verschiebung n der Geraden, fertig.

Code:
m = (y2 - y1) / (x2 - x1);
Code:
n = y2 - (m * x2)
heruas kommt eine wunderbare Gleichung der Form
Code:
y = m * x + n


EDIT: hmmm... wie ich soeben feststelle, bewegen wir uns ja 3D :D das hab ich wohl geflissentlich übersehen ...:oops:
 
Zuletzt bearbeitet:

Knuffi

Mitglied
Auch in 3D kann man sich aus zwei Punkten eine Gerade zusammenstöpseln, aber die Koordinaten werden dabei eher *würg*, weil man sich eher zufällig ein x (oder zwei) raussucht. ;)

Wenn man die Gleichungssysteme löst, dann gibt es dabei meistens schönere Zahlen.

Nochmal die Frage: Kann man mit den Commons Math nicht auch solche unterbestimmten Systeme lösen und dann eine allgemeine Lösung heraus bekommen?
 

Knuffi

Mitglied
Ok, ich hab mir das System nochmal angeschaut. In den meisten Fällen löst es mein Problem, wenn ich den Ansatz von Landei weiterverfolge:

Gegeben sind zwei Ebenen mit
Code:
E1: ax + by + cz + d = 0
E2: ex + fy + gz + h = 0

Man erhält als Lösung des Systems:

Code:
x=(b*(-h-%r1*g)+d*f+%r1*c*f) / (b*e-a*f),
y=-(a*(-h-%r1*g)+d*e+%r1*c*e) / (b*e-a*f),
z=%r1

Was aber, wenn die Nenner der Lösungen 0 sind? Ok, ich könnte vorher das ganze mit einem If abfangen und für diesen Fall neu lösen - macht schon mal mindestens vier eigene Lösungen (a = b = 0, a = e = 0, b = f = 0, e = f = 0), von den dadurch folgenden mit wieder "Nenner = 0" ganz zu schweigen.

Deswegen nochmal die Frage: Kann ich mit den Commons Math solch ein Problem nicht allgemein lösen?
 
P

pappawinni

Gast
Also ich würde mal denken, dass für
E1: ax + by + cz + d = 0
E2: ex + fy + gz + h = 0
(a,b,c) einen Normalenvektor der Ebene E1 und
(e,f,g) einen Normalenvektor der Ebene E2 darstellt.
Eine ggf. vorhandene Schnittgerade hat einen RICHTUNGsvektor, der zu den
Normalen der beiden Ebenen senkrecht ist.
=> Kreuzprodukt der Normalenvektoren der Ebenen liefert Richtungsvektor der Geraden.
Fasst man diesen Richtungsvektor, dieser sei (k,m,n), als Normale einer weiteren Ebene durch den Ursprung auf
E3: kx + my + nz = 0
ergibt sich im Schnitt der 3 Ebenen ein Punkt auf der Geraden.
Das sollte für die Punktrichtungsform der Geraden ausreichend sein.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Schnitt zweier Rechtecke ermitteln Java Basics - Anfänger-Themen 2
N Schnitt Geraden Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
C Proportionale Abnahme zweier Werte Java Basics - Anfänger-Themen 4
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
C Inhalte zweier Vektoren vergleichen Java Basics - Anfänger-Themen 3
T Programm, das die Differenz zweier Daten ausgibt Java Basics - Anfänger-Themen 4
S Ermittlung des GGTs zweier Werte Java Basics - Anfänger-Themen 5
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
A Durchschnitt zweier Mengen berechnen Java Basics - Anfänger-Themen 3
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
J Dimensionen zweier Arrays vergleichen Java Basics - Anfänger-Themen 4
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
turmaline Gleicheit zweier Listen Java Basics - Anfänger-Themen 12
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
C Dateiinhalt zweier Dateien auf Gleichheit prüfen Java Basics - Anfänger-Themen 3
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
W Unterschiede zweier Dateien herauslesen Java Basics - Anfänger-Themen 7
P Unterschiede zweier System.in Varianten Java Basics - Anfänger-Themen 3
I Abhängigkeiten zweier Klassen Java Basics - Anfänger-Themen 25
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
D Eine Nachkommazahl zweier Double vergleichen Java Basics - Anfänger-Themen 4
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
S Addieren zweier Arrays Java Basics - Anfänger-Themen 10
T ermittlung des minimus zweier eingegebener werte Java Basics - Anfänger-Themen 7
G größere zweier zahlen ermitteln und ausgeben Java Basics - Anfänger-Themen 6
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
T Inhalte zweier Variablen tauschen Java Basics - Anfänger-Themen 18
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
N Den Inhalt zweier Strings (Zahlen) addieren Java Basics - Anfänger-Themen 5
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
Q Labels auf verschiedenen Ebenen? Java Basics - Anfänger-Themen 5
G Ebenen Verwaltung und Anzeige Problem Java Basics - Anfänger-Themen 6
G Ebenen in SWING Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben