Polygonzug

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich hab ne Weile gebrütet, aber bin wieder mal zu blöd...
    Ich will wissen, ob ein Polygonzug links herum oder rechts herum geschlossen worden ist. Also muß ich doch nur schauen, ob die Summe aller Winkel +360 oder -360 ist, oder? Ich konnte diese Theorie leider nicht überprüfen, weil ich es nicht schaffe, die Summe aller Winkel zu bilden. Es kommt nie 360 raus. Dabei habe ich Winkel >=180 in -(360-Winkel) umgerechnet, damit alle zwischen -180 und +180 liegen.


    (Ich will handgezeichnete Polygone in GMPhysics-Elemente Umwandeln, aber GMP nimmt sie nur an, wenn sie RECHTSrum gezogen worden sind)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Melancor ()

  • Wie kommst du darauf dass die Summe 360° sein muss?

    Dreieck : 180°
    Viereck : 360°
    Funfeck : 540°
    ...
    n-Eck : (n-2)*180 °


    EDIT: Aber du kanns kontrollieren ob die Summe größer oder kleiner als Null ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bl@ckSp@rk ()

  • LÖSUNG von Bl@ckSp@rk

    Quellcode

    1. Addiert alle Winkel im Polygon
    2. total=0
    3. w1 = point_direction(meshlist_x[0],meshlist_y[0], meshlist_x[1],meshlist_y[1]) // vom 1. zum 2. punkt
    4. for (i=1;i<v_count-2;i+=1)
    5. {
    6. w2 = point_direction(meshlist_x[i],meshlist_y[i], meshlist_x[i+1],meshlist_y[i+1]) // von jedem punkt zum jeweils nächsten
    7. if (w1-w2 > 180)
    8. w1 -= 360;
    9. else if (w2-w1 > 180)
    10. w2 -= 360;
    11. winkel= w2 - w1;
    12. total += winkel;
    13. w1 = w2;
    14. }
    15. if total >0 // linksherum gezeichnet - umkehren
    Alles anzeigen


    War ja doch ganz einfach...

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Melancor ()

  • Benutzer online 1

    1 Besucher