Schnittpunkt zweier Geraden
Schnittpunkt zweier Geraden
Hi zusammen,
ich schreib mir grade eine kleine 3D Engine. Um die Tiefe einzelner
Pixel zu berechnen muss ich ausrechnen wo sich zwei Geraden schneiden.
Eigendlich kann ich das (einfach gleich setzten).
Aber ich bekomme das nicht so umgestellt das ich das mit Java
umsetzten kann.
Kann mir das bitte jemand so schreiben das es Java frisst?
mfg
Empire
ich schreib mir grade eine kleine 3D Engine. Um die Tiefe einzelner
Pixel zu berechnen muss ich ausrechnen wo sich zwei Geraden schneiden.
Eigendlich kann ich das (einfach gleich setzten).
Aber ich bekomme das nicht so umgestellt das ich das mit Java
umsetzten kann.
Kann mir das bitte jemand so schreiben das es Java frisst?
mfg
Empire
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Schnittpunkt zweier Geraden
Tag 
So, ich hab mich da mal kurz ran gesetzt:
Soweit die mathematische Herleitung.
Lösung 1 berechnet dabei nur, ob die Geraden sich schneiden, jedoch keinen Schnittpunkt.
Dafür bin ich mir zu 100% sicher, dass diese Lösung funktioniert.
Auf Lösung 2 bin ich so beim Drübergucken gekommen.
Müsste eigentlich auch funktionieren, und liefert zusätzlich noch Lambda und My um den Schnittpunkt zu berechnen.
Mal Lsg 2 als Code:
Kannst du mir folgen?

So, ich hab mich da mal kurz ran gesetzt:
Soweit die mathematische Herleitung.
Lösung 1 berechnet dabei nur, ob die Geraden sich schneiden, jedoch keinen Schnittpunkt.
Dafür bin ich mir zu 100% sicher, dass diese Lösung funktioniert.
Auf Lösung 2 bin ich so beim Drübergucken gekommen.
Müsste eigentlich auch funktionieren, und liefert zusätzlich noch Lambda und My um den Schnittpunkt zu berechnen.
Mal Lsg 2 als Code:
Code: Alles auswählen
/*
** Muss gegeben sein. a ist Aufpunkt der ersten Gerade, b Aufpunkt der zweiten.
** u ist Richtungsvektor der ersten Gerade, v der der zweiten.
double a1,a2,a3;
double b1,b2,b3;
double v1,v2,v3;
double u1,u2,u3;
*/
double D = (u1*v2 - u2*v1);
if (D != 0)
{
//schneiden sich evtl.
double D1 = (b1-a1)*v2 - v1*(b2-a2);
double D2 = u1*(b2-a2) - u2*(b1-a1);
double lambda = D1/D;
double my = -D2/D;
if(lambda*u3 - my*v3 == b3-a3)
{
//schneiden sich, Punkt lässt sich mit gegebenen Lambda oder my berechnen
double p1 = a1 + lambda*u1;
double p2 = a2 + lambda*u2;
double p3 = a3 + lambda*u3;
}
else
{
// lediglich die Projektion in die x-y-Ebene schneidet sich ... falls dir das was bringt ^^
}
}
else
{
// schneiden sich nicht
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
-
- Beiträge: 236
- Registriert: Do Feb 10, 2011 6:31 pm
Re: Schnittpunkt zweier Geraden
Du meinst diese Geschichte hier?
http://mathenexus.zum.de/html/analysis/ ... eraden.htm
http://www.java-forum.org/spiele-multim ... #post34761
Vielleicht hilft Dir ja das:
http://forum.worldofplayers.de/forum/sh ... p?t=783387
edit:
Das war wohl jemand schneller beim selbst schreiben als ich beim Googlen. .)
http://mathenexus.zum.de/html/analysis/ ... eraden.htm
http://www.java-forum.org/spiele-multim ... #post34761
Vielleicht hilft Dir ja das:
http://forum.worldofplayers.de/forum/sh ... p?t=783387
edit:
Das war wohl jemand schneller beim selbst schreiben als ich beim Googlen. .)
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Schnittpunkt zweier Geraden
Ich will das eig gerade ins Wiki packen, merke aber, dass ich heute nicht dazu in der Lage bin... ich verrechne mich andauernd... sch... Kopfschmerzen.
Ich probiere das morgen nochmal, allerdings bisher ohne Code.
Morgen ist heute: http://proggen.org/doku.php?id=theory:m ... :intersect
Ich probiere das morgen nochmal, allerdings bisher ohne Code.
Morgen ist heute: http://proggen.org/doku.php?id=theory:m ... :intersect
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Schnittpunkt zweier Geraden
Find ich super danke.
Wie muss ich das ändern um das ganze in 2D zu berechnen?
mfg
Eempire
Wie muss ich das ändern um das ganze in 2D zu berechnen?
mfg
Eempire
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Schnittpunkt zweier Geraden
in 2D ist das dann am besten mit meiner Lösung 2 machbar, nur, dass du alles hinter "UND" vergessen kannst 
Im R^2 gibt es nämlich nur Parallele und sich schneidende Geraden, jedoch keine Windschiefen
[quote][/quote]

Im R^2 gibt es nämlich nur Parallele und sich schneidende Geraden, jedoch keine Windschiefen

[quote][/quote]
Code: Alles auswählen
/*
** Muss gegeben sein. a ist Aufpunkt der ersten Gerade, b Aufpunkt der zweiten.
** u ist Richtungsvektor der ersten Gerade, v der der zweiten.
double a1,a2;
double b1,b2;
double v1,v2;
double u1,u2;
*/
double D = (u1*v2 - u2*v1);
if (D != 0)
{
//schneiden sich evtl.
double D1 = (b1-a1)*v2 - v1*(b2-a2);
double D2 = u1*(b2-a2) - u2*(b1-a1);
double lambda = D1/D;
double my = -D2/D;
double p1 = a1 + lambda*u1;
double p2 = a2 + lambda*u2;
}
else
{
// schneiden sich nicht
}
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Schnittpunkt zweier Geraden
Danke ihr habt mich ein großes stück weiter gebracht.
mfg
Empire
mfg
Empire
Re: Schnittpunkt zweier Geraden
Hallo,
ich möchte auch gerne den Schnittpunkt von 2 Geraden berechnen nur möchte ich zusätzlich den Schnittpunkt wissen..könnte mir da jemand weiterhelfen!?
thx
ich möchte auch gerne den Schnittpunkt von 2 Geraden berechnen nur möchte ich zusätzlich den Schnittpunkt wissen..könnte mir da jemand weiterhelfen!?
thx
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Schnittpunkt zweier Geraden
Woran scheitert es denn?nati hat geschrieben:ich möchte auch gerne den Schnittpunkt von 2 Geraden berechnen nur möchte ich zusätzlich den Schnittpunkt wissen..könnte mir da jemand weiterhelfen!?
Und in wievielen Dimensionen verlaufen diese Geraden? Im 3D Raum können die Geraden ja auch problemlos aneinander vorbei laufen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Schnittpunkt zweier Geraden
Die Geraden sind in einem 2D Raum.
Dachte die Variblen p1 und p2 im Code von Dirty Oerti sind die Koordinaten des Schnittpunktes, hat aber mit meinem Beispiel nicht geklappt..
Dachte die Variblen p1 und p2 im Code von Dirty Oerti sind die Koordinaten des Schnittpunktes, hat aber mit meinem Beispiel nicht geklappt..