1000)){
$dur=60;
}
# Anzahl der Kurvenstuecke
if(isset($_GET['anz'])) {
$anz=$_GET['anz'];
} else {
$anz=100;
}
if (($anz < 20) or ($anz > 250)){
$anz=60;
}
$anz=round($anz);
# Kreisfrequenz x, y:
if(isset($_GET['kx'])) {
$krx=$_GET['kx'];
} else {
$krx=mt_rand(1,5);
}
if (($krx < 1) or ($krx > 30)){
$krx=mt_rand(1,5);
}
if(isset($_GET['ky'])) {
$kry=$_GET['ky'];
} else {
$kry=mt_rand(1,5);
}
if (($kry < 1) or ($kry > 30)){
$kry=mt_rand(1,5);
}
# Lissajous-Figur
# Kreisfrequenz x, y:
#$krx=mt_rand(1,5);
#$kry=mt_rand(1,5);
$lx=2*M_PI*$krx;
$ly=2*M_PI*$kry;
$radius=450;
# Startwinkel
$phix=mt_rand(0, 360)/180*M_PI;
$phiy=mt_rand(0, 360)/180*M_PI;
function funx ($t)
{
global $lx, $phix, $radius;
return $radius*cos($lx*$t+$phix);
}
# Ableitung numerisch...
function ablx($t, $h)
{
return (funx($t-2*$h) - 8*funx($t-$h) + 8*funx($t+$h) - funx($t+2*$h))/(12*$h);
}
function funy ($t)
{
global $ly, $phiy, $radius;
return $radius*cos($ly*$t+$phiy);
}
# Ableitung numerisch...
function ably($t, $h)
{
return (funy($t-2*$h) - 8*funy($t-$h) + 8*funy($t+$h) - funy($t+2*$h))/(12*$h);
}
# Punkte rechnen, Startpunkt, Markierungen
$x=funx(0);
$y=funy(0);
$px=round($xmoveto+$x,1);
$py=round($ymoveto+$y,1);
$xalt=$x;
$yalt=$y;
# Ableitungen:
$xabl=ablx(0, 0.001)/$anz;
$yabl=ably(0, 0.001)/$anz;
# Bogen aufsummieren beginnen
$summe =0;
# erster Kontrollpunkt
$kx=round($xabl/3.0,1);
$ky=round($yabl/3.0,1);
$pfad1="M $px, $py c $kx,$ky ";
$einzelpunkte="\n";
# Schleife fuer die weiteren Punkte
for ($i = 1; $i <= $anz; $i++) {
$xx=($i/$anz);
# Randpunkt
$x=funx($xx);
$y=funy($xx);
# Ableitungen fuer x und y
$xabl=ablx($xx, 0.001)/$anz;
$yabl=ably($xx, 0.001)/$anz;
# Bogen grob schaetzen
$summe = $summe + sqrt($xabl*$xabl+$yabl*$yabl);
# zweiten Kontrollpunkt rechnen
$kx=round($x-$xabl/3.0-$xalt,1);
$ky=round($y-$yabl/3.0-$yalt,1);
# automatische stetig differenzierbare Fortsetzung
# fordern
if ($i==2){
$pfad1 .="s ";
}
$pfad1 .="$kx,$ky ";
$px=round($xmoveto+$x,1);
$py=round($ymoveto+$y,1);
$ppx=round($x-$xalt,1);
$ppy=round($y-$yalt,1);
$xalt=$x;
$yalt=$y;
# Kontrollpunkte und Endpunkte
$pfad1 .="$ppx,$ppy \n";
$einzelpunkte .="\n";
}
# Bogen schaetzen
$bogen=round($summe,1);
# svg-header senden:
$content="Content-type: image/svg+xml";
header($content);
# xml-Zeile ausgeben
echo "";
# und jetzt das Dokument
?>
llig bestimmt, damit keine Langeweile aufkommt.
Nullpunkt festlegen, Pfad ausgeben.