100) ){
$anz=5;
}
} else {
$anz=5;
}
if(isset($_GET['kontrast'])) {
$kontrast=$_GET['kontrast'];
if (($kontrast < 0)OR($kontrast > 1) ){
$kontrast=mt_rand(0,1000)/1000;
}
} else {
$kontrast=mt_rand(0,1000)/1000;
}
if(isset($_GET['alpha'])) {
$alpha=$_GET['alpha'];
if (($alpha < -360)OR($alpha > 360) ){
$alpha=mt_rand(-360,360);
}
} else {
$alpha=mt_rand(-360,360);
}
$alphag=$alpha;
$alpha=$alpha/180*M_PI;
if(isset($_GET['delta'])) {
$delta=$_GET['delta'];
if (($delta < -360)OR($delta > 360) ){
$delta=mt_rand(-360,360);
}
} else {
$delta=mt_rand(-360,360);
}
$delta=$delta/180*M_PI;
# Datensatz erzeugen
$hmax=200;
$hmin=$hmax*(1-$kontrast)/(1+$kontrast);
$ca=cos($alpha);
$sa=sin($alpha);
$dphi=2*M_PI/$anz;
for ($j = 0; $j <= $anz; $j++) {
$phi=$dphi*$j;
$cpi=cos($phi+$delta);
$spi=sin($phi+$delta);
$xx=$hmax*$cpi;
$yy=$hmin*$spi;
$dx=-$dphi*$hmax*$spi;
$dy=$dphi*$hmin*$cpi;
$data[$j][0]=$ca*$xx-$sa*$yy;
$data[$j][1]=$sa*$xx+$ca*$yy;
$data[$j][2]=$ca*$dx-$sa*$dy;
$data[$j][3]=$sa*$dx+$ca*$dy;
}
$anz=$anz-1;
# Aus den Ableitungen die Kontrollpunkte berechnen
for ($j = 0; $j <= $anz; $j++) {
$cp[$j][0]=$data[$j][0]+$data[$j][2]/3;
$cp[$j][1]=$data[$j][1]+$data[$j][3]/3;
$cq[$j][0]=$data[$j][0]-$data[$j][2]/3;
$cq[$j][1]=$data[$j][1]-$data[$j][3]/3;
}
# Daraus Pfad bestimmen und malen der
# Kontrollpunkte vorbereiten
$pfada='M'.$data[0][0].' '.$data[0][1].'C';
$cop1="";
$cop2="";
for ($j = 0; $j <$anz; $j++) {
$pfada.=$cp[$j][0].' '.$cp[$j][1].' '.$cq[$j+1][0].' '.$cq[$j+1][1].' '.$data[$j+1][0].' '.$data[$j+1][1]."\n";
$cop1 .='';
$cop2 .='';
}
$pfada.=$cp[$anz][0].' '.$cp[$anz][1].' '.$cq[0][0].' '.$cq[0][1].' '.$data[0][0].' '.$data[0][1]."Z\n";
$cop1 .=''."\n";
$cop2 .=''."\n";
# Alternative Schaetzung der Ableitungen,
# falls diese bei dem Datensatz nicht gegeben sind,
# im gleichen Schritt werden daraus die geschaetzten
# Kontrollpunkte bestimmt
for ($j = 0; $j <= $anz; $j++) {
$jm1=$j-1;
$jp1=$j+1;
if ($j==0)
{
$jm1=$anz;
}
if ($j==$anz)
{
$jp1=0;
}
$diff[$j][0]=$data[$j][0]+($data[$jp1][0]-$data[$jm1][0])/6;
$diff[$j][1]=$data[$j][1]+($data[$jp1][1]-$data[$jm1][1])/6;
$diff[$j][2]=$data[$j][0]-($data[$jp1][0]-$data[$jm1][0])/6;
$diff[$j][3]=$data[$j][1]-($data[$jp1][1]-$data[$jm1][1])/6;
}
# Daraus Pfad bestimmen und malen der
# Kontrollpunkte vorbereiten
$cop3 ='';
$cop4 ='';
$pfad='M'.$data[0][0].' '.$data[0][1].'C'."\n";
$plin='M'.$data[0][0].' '.$data[0][1].'L'.$data[1][0].' '.$data[1][1]."\n";
for ($j = 1; $j <=$anz; $j++) {
$pfad.=$diff[$j-1][0].' '.$diff[$j-1][1].' '.$diff[$j][2].' '.$diff[$j][3].' '.$data[$j][0].' '.$data[$j][1]."\n";
$plin.=$data[$j][0].' '.$data[$j][1]."\n";
$cop3 .='';
$cop4 .='';
}
$pfad.=$diff[$anz][0].' '.$diff[$anz][1].' '.$diff[0][2].' '.$diff[0][3].' '.$data[0][0].' '.$data[0][1]."Z\n";
$plin.=$data[0][0].' '.$data[0][1]."Z\n";
# Alternative Schaetzung der Ableitungen mit besserer Genauigkeit,
# falls diese bei dem Datensatz nicht gegeben sind,
# im gleichen Schritt werden daraus die geschaetzten
# Kontrollpunkte bestimmt
for ($j = 0; $j <= $anz; $j++) {
$jm1=$j-1;
$jm2=$j-2;
$jp1=$j+1;
$jp2=$j+2;
if ($jm1 <0)
{
$jm1=$jm1+$anz+1;
}
if ($jm2 <0)
{
$jm2=$jm2+$anz+1;
}
if ($jp1 >$anz)
{
$jp1=$jp1-$anz-1;
}
if ($jp2 >$anz)
{
$jp2=$jp2-$anz-1;
}
$diff[$j][0]=$data[$j][0]+($data[$jm2][0]-$data[$jp2][0]+8*$data[$jp1][0]-8*$data[$jm1][0])/36;
$diff[$j][1]=$data[$j][1]+($data[$jm2][1]-$data[$jp2][1]+8*$data[$jp1][1]-8*$data[$jm1][1])/36;
$diff[$j][2]=$data[$j][0]-($data[$jm2][0]-$data[$jp2][0]+8*$data[$jp1][0]-8*$data[$jm1][0])/36;
$diff[$j][3]=$data[$j][1]-($data[$jm2][1]-$data[$jp2][1]+8*$data[$jp1][1]-8*$data[$jm1][1])/36;
}
# Daraus Pfad bestimmen und malen der
# Kontrollpunkte vorbereiten
$cop5 ='';
$cop6 ='';
$pfadb='M'.$data[0][0].' '.$data[0][1].'C'."\n";
for ($j = 1; $j <=$anz; $j++) {
$pfadb.=$diff[$j-1][0].' '.$diff[$j-1][1].' '.$diff[$j][2].' '.$diff[$j][3].' '.$data[$j][0].' '.$data[$j][1]."\n";
$cop5 .='';
$cop6 .='';
}
$pfadb.=$diff[$anz][0].' '.$diff[$anz][1].' '.$diff[0][2].' '.$diff[0][3].' '.$data[0][0].' '.$data[0][1]."Z\n";
# svg-header senden:
$content="Content-type: image/svg+xml";
header($content);
echo "";
?>