Kurze überrüfung von Rotationsbeschränkungs-Funktion



  • Hi!

    Ich möchte eine Funktion schreiben die mir den Rotations-winkel eines Hexagons im Intervall 0° bis 360° beschränkt:

    public function restrictRotationYWithin360Degrees() : void {
          if(rotationY % 360 == 0) rotationY=0;
          while(rotationY < 0) rotationY+=360;			
          while(rotationY > 360) rotationY-=360;	
       }
    

    Wollte nur mal nachfragen ob ich das richtig durchdacht habe und wollte auch wissen ob man das besser lösen kann, denn für Winkel >>> 360 und Winkel <<< 0 könnte die Funktion länger dauern.

    Danke!
    MfG Dudeldu



  • warum gibst du nicht einfach das Ergebnis des modulo zurück?



  • geht das für negative rotationen, hab mal den windowsrechner benutzt der liefert falsche ergebnisse.



  • wolfram alpha liefert das richtige, werds einfach mal testen.



  • otze schrieb:

    warum gibst du nicht einfach das Ergebnis des modulo zurück?

    Ich bin mir nicht sicher ob mod garantiert, dass man in [0, 359] liegt oder vielleicht doch nur in [-359,359]. Irgendwie kann man beides vernünftig begründen. Im letzteren Fall müsste man ggf. noch einmal 360 draufaddieren. Das ist aber auf alle Fälle besser als das in einer Schleife zu machen.



  • Alles klar, danke.
    Hab es jetzt so implementiert:

    public function restrictRotationYWithin360Degrees() : void {
       rotationY = rotationY % 360;
       if(rotationY<0) rotationY+=360;	
    }
    

    Da in Actionscript 3.0 der mod-Operator auch negative Werte liefern kann.


Log in to reply