cos(90) = -0,44807361612917 ????



  • und wie kann ich die verschiedenen maße umwandeln?



  • scrub schrieb:

    tjoa, ösi, mußt halt schneller aus der gletscherspalte flutschen. 😃

    :p

    @nuclearspider:

    Rad = Grad * Pi / 180
    Grad = Rad * 180 / Pi

    MfG SideWinder



  • ok, 1:1 für mich 🤡

    DAS WEIß MAN AUISWENDIG WIE MAN DAS UMRECHNET!!!

    mal allgemein gesagt: man gibt einen winkel im bogenmaß an, indem man die bogenlänge über dem winkel im einheitskreis angibt, also mit dem radius 1. man bezieht also die bogenlänge auf den radius. das läuft folgendermaßen:
    bogenlänge eines vollwinkels: kreisumfang, also 2πr2\cdot\pi\cdot r. jetzt teilen wir das durch den radius-> 2πrr=2π\frac{2\cdot\pi\cdot r}{r} = 2\cdot\pi
    also entsprechen 360 grad dem bogenmaß 2π.



  • also irgendwie funktionniert hier garnichts.

    ich programmiere gerade ein kleines 2D game. ein raumschiff soll sich in eine bestimmte richtung bewegen.
    folgende werte hab ich:
    geschwindigkeit, richtung (wert von 0-360), koordinaten(x/y)

    aber irgendwie bewegt sich das raumschiff immer in falsche richtungen. ich weiss nicht woran das liegt.

    meine 1. version sah so aus:

    x += int(speed*cos(richtung));
    y += int(speed*sin(richtung));
    

    aber wie schon gesagt, es funktioniert nicht



  • möglicherweise könnte es vielleicht daran liegen, daß du eine gleitkommazahl mit einem sehr gleitenden komma (denn cos(bla)*blubb ist definitiv ne gleitkommazahl) zu einem integer konvertierst, es werden also wahrscheinlich stellen abgeschnittem- kein wunder, daß da nix gescheites rauskommt.

    lösung (imvho): x als float oder double deklarieren und das int() bei der zuweisung weglassen.



  • Möglicherweise musst du ein += durch ein -= ersetzen, oder du misst den winkel falsch (0° muss in die selbe Richtung wie die x-Achse zeigen). Durch das Abschneiden der Nachkommastellen entstehen natürlich auch fehler, ich würde x und y als float abspeichern und dann gegebenfalls später konvertieren.



  • nein, die winkelfunktionen selber liefern ja schon das richtige vorzeichen. das problem ist schlicht und ergreifend, daß float 2.345385622 halt nicht int 2.2357552 ist, sondern halt 2. oder 3 oder wasweißich, aber alle nachkommastellen gehen verloren.



  • nein, die winkelfunktionen selber liefern ja schon das richtige vorzeichen

    nicht wenn die y-Achse nach unten zeigt (bzw. der winkel im Uhrzeigersinn gemessen wird)



  • ah, sorry, jetzt hab ich gerafft, was du meinst.

    ich bin ainfach davon ausgegangen, daß die winkel richtig gemessen werden, darum nochmal zur verdeutlichung: positive winkel sind gegen den uhrzeigersinn gerichtet.



  • also, es lag an sin() und cos()

    ich brauche nur jeden 10. wert. deshalb habe ich einfach 2 arrays mit jeweils 36 float's erstellt und per hand die sinus und cosinus werte eingegeben.

    und alles funktioniert


Anmelden zum Antworten