/* Variablendeklaration */
...
var alphaRampe; // alphaRampeha: Gefälle der Rampe
var h; // aktuelle Rampenhöhe
var v0 = 0; // Startgeschwindigkeit
var s, v; // Objektort und -geschwindigkeit
var sign, sign0; // Vorzeichen Geschwindigkeit
var moveObject; // Haftreibung überwunden
...
var FG_, FH_, FN_; // Parallelogramm-Kräfte
var my_h, my_g; // Koeff. der Haft- bzw. Gleitreibung
var alpha_krit; // kritischer Rampenwinkel
var g = 9.81; // Erdbeschleunigung
var g_; // Beschleunigungsbetrag auf der Rampe
...
function setup()
{
...
}
function draw()
{
...
sign0 = sign;
if (abs(v) < g*my_g*cos(alphaRampe)*dt) // Bestimmung Vorzeichen für Gleitreibungseinfluss
sign = 0; // keine Bewegung, aktuelle Geschw. < Geschwindigkeitszuwachs -> Haftreibung
else
if (v > 0)
sign = +1;
else
sign = -1;
if (sign != sign0 && alphaRampe < alpha_krit) // Richtungswechsel? ja: Bewegung stoppt!
moveObject = false;
//console.log(sign0+" "+sign+" "+moveObject);
if (alphaRampe > alpha_krit || moveObject)
{
v = v + g*(sin(alphaRampe) - sign*my_g*cos(alphaRampe))*dt; // numerische Lösung Geschwindigkeit
s = s + v*dt; // numerische Lösung Ort
}
if (endProgram(s < -l || s >= -b || t > 20))
dt = 0;
else
t = t + dt;
...
}