Weiche Zufallsbewegung (smooth movement)

(benötigt JavaScript)

Dieser "random Move" wurde mit einer Bezierkurve berechnet. Die Bezierpunkte sind zufällig im Raster 0..200px. Damit der Ball immer etwa gleich rasch bleibt, wurde ein Neuzeichnen unterbunden, wenn die alte Position noch zu nahe an der neuen Position liegt, was insbesondere bei sehr nahen Zufallszahlen jeweils der Fall ist.

Der Quelltext befindet sich hier: bezier.js (Einstiegspunkt: doMyBezierFct())

Dieser zweite "random move" - ich nenne ihn einmal den Verfolger- bedient sich einer ganz anderen einfachen Technik. Ein unsichtbarere Ball wird immer zufällig weit (z. B. 100 Pixel) verschoben. Ein zweiter ebenso unsichtbarer Ball folgt dem ersten unsichtbaren Ball aber mit einer kleineren Schrittweite (z. B. 5 Pixel). Zuletzt folgt der sichtbare grüne Ball dem zweiten unsichtbaren Ball mit einer nochmals kleineren Schrittweite z. B. 1½ Pixel.

Der Quelltext befindet sich hier: follower.js (Einstiegspunkt: doMyFollowerFct())

Fazit

Die Bezierkurve (links) hat weniger «Rauschen» (noise), als die Verfolgerkurve (follower). Die Bezierkuvre wirkt somit «runder». Dafür braucht die Bezierkurve ein Stück mehr Rechenleistung.
Die Bezierkurve wurde so gemacht, dass die sog. Handles auch mal auf den Rand zu liegen kommen. somit nähert sich die Bezierkurve öfter auch den vorgegebenen Grenzen, was beim «Verfolger» eher selten passiert, denn bis der sichtbare Ball nahe am Rand ist, ist die Wahrscheinlichkeit groß, dass der erste unsichtbare Zufallsball schon lange wieder weg ist.

Math: ph. gressly freimann
Tricks: p. stillhart