Seite 1 von 2

Schnittpunkt zweier Geraden

Verfasst: Sa Feb 19, 2011 8:49 pm
von Empire
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

Re: Schnittpunkt zweier Geraden

Verfasst: Sa Feb 19, 2011 9:49 pm
von Dirty Oerti
Tag :)
So, ich hab mich da mal kurz ran gesetzt:
lsg.png
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
}
Kannst du mir folgen?

Re: Schnittpunkt zweier Geraden

Verfasst: Sa Feb 19, 2011 9:54 pm
von nouseforname
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. .)

Re: Schnittpunkt zweier Geraden

Verfasst: Sa Feb 19, 2011 11:55 pm
von Xin
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

Re: Schnittpunkt zweier Geraden

Verfasst: So Feb 20, 2011 2:26 pm
von Empire
Find ich super danke.
Wie muss ich das ändern um das ganze in 2D zu berechnen?

mfg
Eempire

Re: Schnittpunkt zweier Geraden

Verfasst: So Feb 20, 2011 2:44 pm
von Dirty Oerti
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]

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
}

Re: Schnittpunkt zweier Geraden

Verfasst: So Feb 20, 2011 3:16 pm
von Empire
Danke ihr habt mich ein großes stück weiter gebracht.

mfg
Empire

Re: Schnittpunkt zweier Geraden

Verfasst: Mi Mai 29, 2013 8:50 am
von nati
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

Re: Schnittpunkt zweier Geraden

Verfasst: Mi Mai 29, 2013 8:54 am
von Xin
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!?
Woran scheitert es denn?

Und in wievielen Dimensionen verlaufen diese Geraden? Im 3D Raum können die Geraden ja auch problemlos aneinander vorbei laufen.

Re: Schnittpunkt zweier Geraden

Verfasst: Mi Mai 29, 2013 9:07 am
von nati
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..