Ich suche nach einer cleveren Möglichkeit, eine Zählervariable zu erhöhen und dann zu dekrementieren. Ich möchte, dass die Zählervariable bei einem niedrigen Wert beginnt und zu einem höheren Wert erhöht wird. Sobald er den höheren Wert erreicht, dekrementiert der Zähler, bis er den niedrigeren Wert erreicht. Sobald es den niedrigeren Wert erreicht, erhöht der Zähler wieder auf den höheren Wert ... Ich denke, Sie bekommen den Punkt.
Ich arbeite an einer Leinwandanimation , wo ich etwas Cleverness einsetzen möchte, ohne if
oder andere bedingte Tests:
Hier ist die Bedingungslogik, die die Zählervariable behandelt:
%Vor%Anfangs dachte ich, ich könnte modulo benutzen. Die Modulo-Division setzt den Zähler jedoch nur auf den niedrigeren Wert zurück - er dekrementiert den Zähler nicht, wenn er den höchsten Wert erreicht hat.
%Vor%Ich bin mir sicher, dass es einen Weg geben muss, dies ohne bedingte Tests zu tun. Unterstellt man einen unteren Wert von 0 und einen oberen Wert von 10, sollte die Methode folgendes ausgeben:
%Vor%Zuerst schauen wir uns einige Wellen an!
Hallo Wellen!
Können Sie den Ihren Anforderungen entsprechenden identifizieren?
Wenn Sie Dreiecks-Welle erraten haben, haben Sie recht!
Die Dreieckswelle oszilliert mit einer gleichmäßigen Steigung, bis sie ein Minimum oder Maximum erreicht, und dann wird die Steigung umgekehrt.
Zwei Dinge, die hier erarbeitet werden sollten:
x
zu -x
Wir möchten die Ausgabe bei 0
starten und nur positive Werte enthalten
Lass es uns ausprobieren
%Vor%Ausgabe
%Vor% Wenn wir also triangle(i, 10)
aufrufen, ist 10
die "Periode". Dies sagt uns, wie viele Schritte wir in unserer Funktion haben wollen, bevor es wiederholt wird.
Eine Periode von 6
würde uns 6 Werte geben, 0, 1, 2, 3, 2, 1
Eine Periode von 4
würde uns 4 Werte geben, 0, 1, 2, 1
etc
Wenn Sie von 0-9
wechseln möchten, benötigen Sie einen Zeitraum von 20
Hier ist eins:
%Vor%was dir geben wird
%Vor%Natürlich gibt es dort eine Bedingung, die nur als bitweise Operation versteckt ist.
Eine andere Möglichkeit ist ein Dreieckswellenzähler:
%Vor%was macht
%Vor%wieder gibt es eine versteckte Bedingung, die die Bits umdreht, wenn es halbwegs ist.
Tags und Links javascript coffeescript logic