/* Variablendeklaration */
...
var kmy_h; // Regler Koeff. Haftreibung
var kmy_g; // Regler Koeff. Gleitreibung
var alp; // alpha: Gefälle der Rampe
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()
{
...
if (alp > alpha_krit || moveObject)
{
v = v0 + g_*t; // analytische Lösung Geschwindigkeit
s = s0 + v0*t + g_*sq(t)/2; // analytische Lösung Ort
}
else
{
v = 0; // Obj. nicht in Bewegung -> Haftreibung
t = 0;
}
if (abs(v) < 0.003 || sign != sign0)
/* Geschwindigkeit kleiner als Schwellw. oder Richtungswechsel? */
{
moveObject = false;
}
else
{
g_ = g*(sin(alp)-sign*my_g*cos(alp)); // wirksame Erdbeschleunigung
moveObject = true;
sign0 = sign; // Vorzeichen merken
if (v > 0)
sign = 1;
else
sign = -1;
}
if (endProgram(s < -l || s >= -b || t > 20))
dt = 0;
else
t = t + dt;
}