'; $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]=round($data[$j][0]+($data[$jp1][0]-$data[$jm1][0])/6,1); $diff[$j][1]=round($data[$j][1]+($data[$jp1][1]-$data[$jm1][1])/6,1); $diff[$j][2]=round($data[$j][0]-($data[$jp1][0]-$data[$jm1][0])/6,1); $diff[$j][3]=round($data[$j][1]-($data[$jp1][1]-$data[$jm1][1])/6,1); } # 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]=round($data[$j][0]+($data[$jm2][0]-$data[$jp2][0]+8*$data[$jp1][0]-8*$data[$jm1][0])/36,1); $diff[$j][1]=round($data[$j][1]+($data[$jm2][1]-$data[$jp2][1]+8*$data[$jp1][1]-8*$data[$jm1][1])/36,1); $diff[$j][2]=round($data[$j][0]-($data[$jm2][0]-$data[$jp2][0]+8*$data[$jp1][0]-8*$data[$jm1][0])/36,1); $diff[$j][3]=round($data[$j][1]-($data[$jm2][1]-$data[$jp2][1]+8*$data[$jp1][1]-8*$data[$jm1][1])/36,1); } # 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 ""; ?> Interpolation Zu interpolierender Kreis Linearer Spline Kubischer Spline aus gegebenen Ableitungen Kubischer Spline aus besser geschätzten Ableitungen Kubischer Spline aus geschätzten Ableitungen Kontrollpunkte aus gegebenen Ableitungen Kontrollpunkte aus geschätzten Ableitungen Kontrollpunkte aus besser geschätzten Ableitungen