1000) ){ $anz=mt_rand(5,20); } } else { $anz=mt_rand(5,20); } $anz=$anz-1; 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['f'])) { $f=$_GET['f']; if (($f < -100)OR($f > 100) ){ $f=mt_rand(-10,10); } } else { $f=mt_rand(-10,10); } if(isset($_GET['h'])) { $h=$_GET['h']; if (($h < -100)OR($h > 100) ){ $h=200; } } else { $h=200; } # Datensatz erzeugen $cop1=""; for ($j = 0; $j <= $anz; $j++) { $xx=$j/$anz*720-360; $phi=$xx*M_PI/180; $pc=$f*$phi+$alpha; $yy=$h*cos($pc)/($phi*$phi+1); $data[$j][0]=round($xx,2); $data[$j][1]=round($yy,2); $cop1 .=''; } # Alternative Schaetzung der Ableitungen mit besserer Genauigkeit, # falls diese bei dem Datensatz nicht gegeben sind. $diff[0][0]=round($data[0][0]+(-3*$data[0][0]+4*$data[1][0]-$data[2][0])/6,2); $diff[0][1]=round($data[0][1]+(-3*$data[0][1]+4*$data[1][1]-$data[2][1])/6,2); $diff[0][2]=round($data[0][0]-(-3*$data[0][0]+4*$data[1][0]-$data[2][0])/6,2); $diff[0][3]=round($data[0][1]-(-3*$data[0][1]+4*$data[1][1]-$data[2][1])/6,2); $diff[1][2]=round($data[1][0]-(-3*$data[0][0]-10*$data[1][0]+18*$data[2][0]-6*$data[3][0]+$data[4][0])/36,2); $diff[1][3]=round($data[1][1]-(-3*$data[0][1]-10*$data[1][1]+18*$data[2][1]-6*$data[3][1]+$data[4][1])/36,2); $diff[$anz][2]=round($data[$anz][0]+(-3*$data[$anz][0]+4*$data[$anz-1][0]-$data[$anz-2][0])/6,2); $diff[$anz][3]=round($data[$anz][1]+(-3*$data[$anz][1]+4*$data[$anz-1][1]-$data[$anz-2][1])/6,2); $diff[$anz-1][2]=round($data[$anz-1][0]+(-3*$data[$anz][0]-10*$data[$anz-1][0]+18*$data[$anz-2][0]-6*$data[$anz-3][0]+$data[$anz-4][0])/36,2); $diff[$anz-1][3]=round($data[$anz-1][1]+(-3*$data[$anz][1]-10*$data[$anz-1][1]+18*$data[$anz-2][1]-6*$data[$anz-3][1]+$data[$anz-4][1])/36,2); for ($j = 2; $j <= ($anz-2); $j++) { $jm1=$j-1; $jm2=$j-2; $jp1=$j+1; $jp2=$j+2; $diff[$j][2]=round($data[$j][0]-($data[$jm2][0]-$data[$jp2][0]+8*$data[$jp1][0]-8*$data[$jm1][0])/36,2); $diff[$j][3]=round($data[$j][1]-($data[$jm2][1]-$data[$jp2][1]+8*$data[$jp1][1]-8*$data[$jm1][1])/36,2); } # Daraus Pfad bestimmen $pfadb='M'.$data[0][0].' '.$data[0][1].'C'.$diff[0][0].' '.$diff[0][1].' '.$diff[1][2].' '.$diff[1][3].' '.$data[1][0].' '.$data[1][1]."S\n"; for ($j = 2; $j <=$anz; $j++) { $pfadb.=$diff[$j][2].' '.$diff[$j][3].' '.$data[$j][0].' '.$data[$j][1]."\n"; } # svg-header senden: $content="Content-type: image/svg+xml"; header($content); echo ""; ?> Interpolation Kubischer Spline aus geschätzten Ableitungen Gegebene Punkte