10000)){ $dur=100; } # Anzahl der Animationsstuecke if(isset($_GET['anz'])) { $anz=2*$_GET['anz']; } else { $anz=36; } if (($anz< 2) or ($anz > 200)){ $dur=36; } # Amplitude $posr=400.0; # Drehrichtung $vorweg=2*mt_rand(0,1)-1; # strings initialisieren $values =""; $keyTimes=""; $keySplines=""; $beta=$vorweg*2.0*M_PI/$anz; $kSt0=round(1.0/3.0,4); $kSt1=round(2.0/3.0,4); # strings berechnen for ($j = 0; $j <= $anz; $j++) { $zeit=$beta*$j; $alpha0=$beta*$j; $alpha1=$beta*($j+1); $cos0=cos($alpha0); $cos1=cos($alpha1); $sin0=sin($alpha0); $sin1=sin($alpha1); $q=$cos1-$cos0; if ($q == 0) { $q=1; } $weg=round($posr*$cos0,2); $kSs0=round(-$beta/$q*$sin0/3.0,4); $kSs1=round(1+$beta/$q*$sin1/3.0,4); $kT=round(min(1,max(0,$j/$anz)),4); if ($j == $anz) { $values .="$weg \n"; $keyTimes.="$kT \n"; #$keySplines="$kSt0 $kSs0 $kSt1 $kSs1 \n"; } else { $values .="$weg; \n"; $keyTimes.="$kT; \n"; if ($j == ($anz-1)) { $keySplines.="$kSt0 $kSs0 $kSt1 $kSs1 \n"; } else { $keySplines.="$kSt0 $kSs0 $kSt1 $kSs1; \n"; } } } # svg-header senden: $content="Content-type: image/svg+xml"; header($content); # xml-Zeile ausgeben echo ""; # und jetzt das Dokument ?> Beispiel keySplines SVG-Beispiel: Ein harmonischer Oszillator als Beispiel für eine Animation mit keySplines mit calcMode=spline. Rot: ohne keySplines, Blau: mit keySplines. Gelbes Quadrat: Exakte harmonische Schwingung aus einer Drehung gewonnen. Verfügbare Parameter: dur - Animationszeit in Sekunden anz - Stützstellen der Animation von 0 bis 2 anz Koordinatensytem richtig hinschieben und Spiegeln. Rotation als exakte Repräsentation einer harmonischen Oszillation. Bewegung eines Oszillators ohne keySplines animieren. Animierter Kreis. Bewegung des Oszillators mit keySplines animieren. Animierter Kreis.