/* 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; ... }