Dreieck bilden



  • Hallo,

    ich habe 6 2D-Punkte, diese 6 Punkte ergeben 3 Linien.
    Linie 1: P1(120;334) P2(649;204)
    Linie 2: P3(104;483) P4(470;713)
    Linie 3: P5(258;430) P6(635;523)

    Das ganze sieht dann ungefähr so aus:
    http://yfrog.com/16linienp

    Durch Parallelverschiebung der Linien kann man ja ein Dreieck bilden, ungefähr so:
    http://yfrog.com/jblinien2p

    Ich will nun ein Programm schreiben, dass mir aus den 3 gegebenen Linien die Innenwinkel des resultierenden Dreiecks berechnet.
    Ich gehe bisher so vor, dass ich zunächst die Winkel zwischen den einzelnen Linien ermittle. Das sind aber nicht immer automatisch die Innenwinkel des Dreiecks, so dass ich mal den errechneten Winkel nehmen muss und mal 180°-errechneter Winkel. Mein Problem liegt nun darin das ganze algorithmisch zu bewerten, also wann ich welchen Winkel nehmen muss. Ich könnte es über etliche > und < Vergleiche der Koordinaten lösen, aber das ist mir ehrlich gesagt zu unelegant 🙂
    Ich suche also eine elegante mathematische Lösung für dieses Problem.

    Gruß


  • Mod

    http://img99.imageshack.us/img99/6207/triangle.png

    Winkel sind dabei IMMER so gemeint wie im Bild. Z.B: a der Winkel von A nach B, b der Winkel von B nach A, usw.



  • Hallo,

    in deinem Beispiel ist a kleiner c, also sollten die Innenwinkel a,c,e sein. Es ist aber a,d,e. Oder habe ich das falsch verstanden?


  • Mod

    Du hast recht, ich hab es auf dem Bild falsch hingeschrieben. Entsprechend muss dann auch der zweite Fall geändert werden zu bcf.



  • Oder ganz stur logisch so:

    1. Berechne die 3 Schnittpunkte der Geraden paarweise
    2. Benutze fortan diese Punkte als 3- Eck
    3. Berechne die doppelte Fläche des 3- Ecks (Wiki hat ne einfache Formel)
    4. An jeder Ecke gilt:
       Seitenlänge links * Seitenlänge rechts * cos(Winkel) = doppelte Fläche
    5. Teste, ob Winkel > 90 Grad:
       a) Fälle Lot von vorheriger Ecke auf Linie zu folgender Ecke
       b) Ist Lotpunkt inerhalb der Line => Winkel<90 Grad
          Ist Lotpunkt ausserhalb der Linie => Winkel>90 Grad
    6. Wiederhole 3x oder bis eine Ecke grösser 90 Grad
    7. Voila
    

    Gruss
    Frank


Anmelden zum Antworten