| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2004
Beiträge: 32
|
hallo leute.... ich glaub, ich steh grad ein bisschen aufm schlauch... _currentRotation kennzeichnet einen winkel und soll immer zwischen 0 und 360 liegen (d.h. 361 entspricht 1). momentan verfahre ich nach einer änderung von _currentRotation folgendermaßen: Code: while(_currentRotation >= 360) _currentRotation -= 360; while(_currentRotation < 0) _currentRotation += 360; danke + gruß, pixologe |
| | |
| | #2 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
Hi, ja, das geht mit dem guten alten Modulo: _currentRotation += 360; // gegen negative Werte _currentRotation %= 360; Teilt ganzzahlig durch 360 und gibt den Rest zurück. Grüße Sascha
__________________ 12:15, press return Geändert von ludabruda (16-09-2004 um 09:52 Uhr) |
| | |
| | #6 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
ok, wenn du eine freie Eingabe hast, kann sowas rauskommen. Üblicherweise sind Veränderungen des Winkels aber kleiner 360 Grad. Da du die Korrektur jedes Mal ausführst, ist das eigentlich kein Problem. so geht es immer: k = (w%360 + 360)%360; bei w = -370 ist w%360 = -10; plus 360 macht 350. Der zweite Modulo macht nix. bei w = 400 ist w%360 = 40; plus 360 macht wieder 400 400%360 = 40; Ich kann nicht sagen, ob das die performanteste Art ist, aber sie ist kurz und tut's ![]() Grüße Sascha
__________________ 12:15, press return |
| | |
| | #7 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
@mooseMash: das war auch meine erste Lösung. Fragt sich nur, was schneller ist: eine if-Abfrage (bzw. ein ternärer Ausdruck) oder ein weitereR Modulo... ![]() Grüße Sascha
__________________ 12:15, press return Geändert von ludabruda (16-09-2004 um 10:13 Uhr) |
| | |
| | #9 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
| PHP-Code: 1. 575 2. 1835 3. 896 schaice , mein rechner fährt in 10 s runter ....
__________________ |
| | |
| | #10 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
@mooseMash: na, das sieht aber interessant aus ![]() Thanks to maddin79 für die prompte Beweisführung. Bei mir ergibt sich zwar nur etwa Faktor 2, aber das Ergebnis ist eindeutig. Obgleich ich kein vehementer Anhänger dieses Mikro-Performance-Differenz-Kults bin; in realistischer Umgebung ist die Differenz wohl kaum messbar und vor allem kaum merklich ![]() Btw: das gleiche Skript von mir als Funktionsaufruf zeigt nur eine sehr geringe Differenz zu Penners Funktion: Penner: 1295 bruda: 1238 (bruda direkt in Schleife: 461) Am schnellsten geht es in einer Funktion, wenn diese als Math.prototype definiert ist (706): Math.prototype.fixAngle = function(angle){ return(angle%360 + 360)%360; } Grüße Sascha
__________________ 12:15, press return Geändert von ludabruda (16-09-2004 um 10:32 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |