# Kapitel 5_a:
# Die rckprallende Kugel
#  2015 Friedrich U. Mathiak,
# mathiak@mechanik-info.de
# 
> restart; with(LinearAlgebra): with(plots):
# Beispiel 5-1:
# 
# Zur experimentellen Bestimmung der Stozahl   lsst man eine kleine Kugel aus der Hhe h0 auf eine glatte mglichst Platte fallen. Da whrend des Stoes unvermeidlich kinetische Energie verlorengeht, erreicht die Kugel beim ersten Rckprall nur noch die Hhe h1 (s.h. obige Abb.). In Erweiterung zur theoretischen Untersuchung (s.h. Buch TM 3) soll hier der Bewegungszustand der rckprallenden Kugel animiert werden. Wir definieren zunchst die Oberflche der starren Platte:
> OFP:= 0.0; xE:=2.;
> plot(OFP, x = 0 .. xE, scaling = constrained):
# Der Geschwindigkeitsvektor des Balls:
> V := Vector([diff(x(t), t), diff(y(t), t)]);
# Der Normalenvektor der Plattenoberflche:
> N := Normalize(Vector([[-(diff(OFP,x))],[1]]),2, conjugate = false);
# Der Geschwindigkeitsvektor nach dem Rckprall
> V_rueck:=-(1+epsilon)*(Transpose(V).N)*N+V;
> V_rueck:=simplify(V_rueck,symbolic);
# Stozahl 
> epsilon := .8; h0:=5.;
# Differenzialgleichungen und Anfangsbedingungen
> DGLn := diff(y(t), t, t) = -9.81, diff(x(t), t, t) = 0;
> AB := (D(x))(0) = 0., (D(y))(0) = 0., x(0) = xE/2, y(0) = h0;
> simplify(V_rueck);
# Lsung der Differentialgleichungen 
> tE:=5.0; #Ende der Simulationszeit
;
> sol := dsolve({DGLn, AB}, {x(t), y(t)}, numeric, events = [[y(t) = eval(OFP, x = x(t)), [temp = diff(x(t), t), diff(x(t), t) = V_rueck[1], diff(y(t), t) = subs(diff(x(t), t) = temp, V_rueck[2])]]], range = 0 .. tE, output = listprocedure);
# Animation der Bewegung
> xanim := subs(sol, x(t)):
> yanim := subs(sol, y(t)):
> p1 := plot(OFP, x = 0 .. xE, color = blue, thickness = 3):
> p2 := animate(pointplot, [[xanim(t), yanim(t)], symbol = solidcircle, symbolsize = 25, color = blue], t = 0 .. tE, frames = 100):
> display(p1, p2, view = [0 .. xE, 0 .. h0], scaling = constrained, gridlines = true);
> 
;
