Problem mit arcCosinus etc...

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Und zwar versuche ich grade eine Funktion zu schreiben, die mir einen Winkel zurückgibt, zu dem ein Spieler zu einem Fahrzeug steht.
    Das heißt.... wenn ein Fahrzeug irgendwie gedreht in der Map steht will ich wissen in welchem Winkel man vom Fahrzeug aus weggehen muss um zum Spieler zu kommen.


    Wenn das Fahrzeug A irgendwo steht will ich den Winkel zu S wissen (In dem Fall 315°)


    -------(0)----- S
    --------|--------
    (90) - A - (270)
    -------|---------
    -----(180)-------


    Bis jetzt läuft das auch ganz gut. Mein Problem ist nur, dass die Funktion eben nicht Werte von 0°-360° sondern nur von 0°-180°-0° zurückgibt.
    Sieht dann so aus:


    -------(0)----- S
    --------|--------
    (90) - A - (90)
    -------|---------
    -----(180)-------


    Hat einer ne Ahnung wie ich das umschreiben könnte, dass das funktioniert?
    Hier mein bisheriger Code:


    Danke schonmal ;)

  • stock FacingAngleToVehicle(playerid,vehicleid){
    new Float: Pos[6];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetVehiclePos(vehicleid, Pos[3], Pos[4],Pos[5]);
    printf("%f",(180.0-atan2(Pos[0]-Pos[3],Pos[1]-Pos[4])));
    return SetPlayerFacingAngle(playerid,180.0-atan2(Pos[0]-Pos[3],Pos[1]-Pos[4]));
    }


    sollte so ohne probleme gehen

  • Jo danke, bin grad ned daheim, werde das später aber mal testen.
    Habe mir die atan2 Funktion auch schon angeschaut. Was ist denn der grundlegende Unterschied? dass man durch die zwei Parameter die Vorzeichen verwenden kann?

  • mich wundert es warum du mit cosinus rechnest du hast die Hypotenuse nicht gegeben obwohl du diese berechnen kannst durch den Satz des Pythagoras.


    atan2 und atan ist das selbe


    Beispiel: du hast ein Dreieck dort ist die ankathete 15 zentimeter und die gegenkathete 18 zentimeter
    daher rechnen wir Gegenkathete durch Ankathete


    18/15


    bei atan2 würde das so aussehen atan2(18,15);
    und bei atan(18.0/15.0);
    Ergebniss bei beiden 50.19442891 Grad.


    Der unterschied liegt in der Verwendung

  • Mhm ja ich hatte mir das irgendwie kompliziert aufgezeichnet, dann bin ich irgendwie aufn cosinus gekommen. Kann nicht so falsch gewesen sein, wenn nur das Vorzeichen falsch war.
    Davor hatte ich das auch schonmal mitm tangens, hatte da aber irwie auch schon das Problem mit den Vorzeichen.
    Naja, is ja wayne, nachdem ich deinen Code bisschen bearbeitet hatte hats dann alles problemlos funktioniert.
    Danke ;)