Winkel zwischen zwei Richtungen/"Directions" ?

  • GM 8

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

  • Winkel zwischen zwei Richtungen/"Directions" ?

    Hi,
    ich suche eine Formel oder so um den Winkel zwischen zwei Directions zu berechnen.
    Ich habe zum Beispiel die direction 45 und die direction 300 und will jetzt einmal diesen:



    und auch diesen berechnen:



    Am besten halt auch in der gewohnten 360°-Größe
    Also zum Beispiel für α = 105°und für β = 255° oder so :D
    Gibts da irgendeine Formel oder n Skript? Oder eine andere Möglichkeit irgendwie sowas zu erhalten

    Muss aber zuverlässig sein

    Wer wissen will wozu ichs brauch...also zum beispiel um ein Geschütz in die Richtung zu drehen über welche man schneller das Ziel anvisiert hat (Vielleicht gibts da ja sogar eine noch einfachere Möglichkeit?)

    -Pac


    ps.: Ich hab schon diverse Formeln ausprobiert, aber irgendwie buggen sie alle früher oder später rum
    Sorm ist Schuld

    Edit: Doch ist er
  • Ich kann da den Script von GMLscripts.com empfehlen:

    GML-Quellcode

    1. /*
    2. ** usage:
    3. ** diff = angle_difference(angle1,angle2);
    4. **
    5. ** given:
    6. ** angle1 first direction in degrees, real
    7. ** angle2 second direction in degrees, real
    8. **
    9. ** returns:
    10. ** difference of the given angles in degrees, -180 to 180
    11. **
    12. ** GMLscripts.com
    13. */
    14. {
    15. return ((((argument0 - argument1) mod 360) + 540) mod 360) - 180;
    16. }
    Alles anzeigen

    (GMLscripts scheint aktuell down zu sein, daher kopier ich den Skript einfach mal hier rein.)

    Die neuste 1.3 Version von GM Studio soll bereits eine gleichnamige Funktion nativ eingebaut haben.

    Den winkel vom ersten Bild berechnet man mit der Funktion ganz einfach:

    GML-Quellcode

    1. var winkel = angle_difference(45,300);


    Den Winkel den du auf dem 2ten Bild dargestellt hast, kann man auch einfach berechnen. Ziehe einfach das Ergebniss der Funktion von 360 ab:

    GML-Quellcode

    1. var winkel_zwei = 360-angle_difference(45,300);
  • CAS schrieb:

    Mich würde da mal interessieren, wieso zweimal der Modulo-operator benutzt wird, denn zumindest mathematisch gilt: (a mod x + b) mod x = (a+b) mod x.
    (Allerdings funktioniert die Modulo-Operation dort auch problemlos mit negativen Zahlen, deswegen mag das hier durchaus einen Sinn haben.)

    Modulo funktioniert im GM leider anders bei negativen Zahlen.