Die Dokumentation zu der Bibliothek Smooth.js erklärt, wie man das gewünschte Ergebnis erzielen kann. Man legt eine Variable Kurvenfunktion fest und übergibt der Operation Smooth die Punkte als Liste. Die Operation Smooth gibt die Funktion zurück, mit welcher die Kurvenpunkte berechnet werden können:
kurvenFunktion = Smooth(yPunkteArray);
Der Funktion kurvenFunktion übergibt man einen gewünschten x-Wert und kurvenFunktion liefert einen passenden y-Wert, der zum Verlauf der Hügel passt:
kurvenFunktion(i/50)
Zusätzlich zu der Bibliothek Smooth.js wird in das Programm die Bibliothek quicksettings.js eingebunden, damit problemlos Steuerelemente in das Programm gesetzt werden können. Aktivieren Sie in den Steuerelementen "Linien anzeigen" und "Smoothie anzeigen":
In einem neuen Fenster starten: Smooth
Eine kurze Erklärung zu den wichtigen Zeilen:
kurvenFunktion = Smooth(yPunkteArray);
Das Array yPunkteArray mit den y-Werten wird an die Funktion Smooth übergeben. Die Funktion Smooth ermittelt auf der Basis der übergebenen Werte eine Funktion, mit deren Hilfe die Kurvenpunkte berechnet werden können. Diese Funktion wird in der Variablen kurvenFunktion gespeichert.
if (smoothieAn) {
for (let i=0; i<=500; i++) {
strokeWeight(0);
fill('STEELBLUE');
ellipse(i, height-kurvenFunktion(i/50), 3, 3);
}
}
Jetzt soll die Kurve gezeichnet werden. Wenn die Boolsche Variable smoothieAn den Wert wahr hat, dann sollen 501 Ellipsen als Kurve gezeichnet werden. Der x-Wert ist i, der y-Wert wird mit Hilfe der kurvenFunktion berechnet. Am Anfang der draw-Funktion wird das Koordinatensystem mit translate(50, 0); um 50 nach rechts verschoben. Die y-Werte werden von der Höhe der Zeichenfläche height abgezogen, da der Koordinatenursprung ja oben links liegt.
Als Übergabeparameter an die kurvenFunktion wählt man i/50, da man 10 Bezugspunkte hat, aber 501 y-Werte benötigt. Der Rückgabewert der kurvenFunktion ist der interpolierte y-Wert, den die Funktion ellipse verwendet, so dass eine stetige und differenzierbare Kurve entsteht.