This is an old revision of the document!
Buildingblocks für Animationen
Gleichmässige Bewegung
Eine Gleichmässige Bewegung (linear oder rotierend) kann durch eine lineare Funktion in der Zeit (in POV-Ray clock
) beschrieben werden.
Verschiebung
#declare start = <-2,-3,1.5>; #declare ende = <1,2,0.5>; // Lineare Bewegung vom Punkt 'start' zum Punkt 'ende': // Sei 'vektor' der vektor von start zu ende, also vektor = ende-start // Position = start + clock*vektor sphere { start + clock*(ende-start), 0.3 // Kugel mit linearer Bewegung von start zu ende pigment {color rgb x+y} }
Rotation
// Gleichmässige Rotation: // Zum Zeitpunkt 0 ist der Winkel 0, zum Zeitpunkt 1, 360 also // winkel = 360*clock sphere { <2,0,0.5>, 0.5 rotate 360*clock*z pigment {color rgb x+y} }
Gleichmässig beschleunigte Bewegung
Eine gleichmässig beschleunigte Bewegung wird durch eine quadratische Funktion beschrieben, mit quadratischem Koeffizienten $\frac{1}{2}a$, wobei $a$ die Beschleunigung ist.
Meistens werden aber einfach die Nullstellen der Parabel und die Höhe des Scheitels gewählt, damit die Animation passt.
Vertikaler Fall
#declare hoehe=2; // Gleichmässig beschleunigte Bewegung vom Ursprung auf die Höhe 2 und zurück. // Die Höhe ist eine Quadratische Funktion mit f(0)=0, f(1)=0 und f(0.5)=hoehe. // Da die Nullstellen bekannt sind, kann die Funktion als f(x)=a*x*(1-x) mit // noch zu bestimmenden Öffnungsfaktor a geschrieben werden. Damit ist schon einmal // f(0)=f(1)=0 gegeben. Durch einsetzen erhält man f(0.5)=0.25*a. D.h. a muss also // als 4*hoehe gewählt werden. sphere { 4*hoehe*clock*(1-clock)*z, 0.3 // Kugel mit z-Koordinate als quadratische Funktion mit Nullstellen zur Zeit 0 und 1, gegebene Scheitelhöhe. pigment {color rgb x+y} translate 0.3*z // Damit die Kugel den Boden berührt und nicht darin versinkt. }
Wurfparabel
Lineare Bewegung in $x/y$-Richtung, Quadratische Bewegung in $z$-Richtung:
#include "markierungen.inc" #declare hoehe=2; // Start und Ende auf selber Höhe! #declare start=<0,-2,0>; #declare ende=<0,2,0>; // die Bewegung parallel zur x-y-Ebene erfolgt linear, // die Bewegung in z-Richtung ist quadratisch sphere { start+clock*(ende-start) + 4*hoehe*clock*(1-clock)*z, 0.3 // Kugel mit linearer Bewegung von start zu ende, plus quadratische z-Koordinate pigment {color rgb x+y} translate 0.3*z // Damit die Kugel den Boden berührt und nicht darin versinkt. }
Schwingungen
Schwingung als lineare Bewegung
#declare start = <-2,-3,1.5>; #declare ende = <1,2,0.5>; // Lineare Schwingung vom Punkt 'start' zum Punkt 'ende': // Sei 'vektor' der vektor von start zu ende, also vektor = ende-start // // Wir brauchen eine Schwingung, die in der Zeit 1 eine volle Schwingung zwischen // den Positionen 0 und 1 vollführt. // f(t) = 0.5*sin(t*2*pi)+0.5 // // Diese Funktion beschreibt die Position zwischen dem Start- und Endpunkt // Position = start + f(clock)*vektor sphere { start + (0.5*sin(clock*pi*2)+0.5)*(ende-start), 0.3 // Kugel mit linearer Bewegung von start zu ende pigment {color rgb x+y} }
Drehpendel
#declare auslenkung=20; // Schwingung zwischen +/- auslenkung // Wir brauchen eine Funktion, die zwischen -20 und +20 schwingt // f(t) = sin(2*pi*t)*auslenkung union { // Pendel mit Drehpunkt im Uhrsprung! Verschoben wird **nach** der Drehung sphere { 0, 0.1 } cylinder { 0, -2*z, 0.05 } sphere {-2*z, 0.3 } pigment {color rgb <1,1,0> } // Erst rotieren um die x-Achse: rotate auslenkung*sin(clock*2*pi)*x // Dann nach oben verschieben: translate 2.5*z }