Ich habe vor ein paar Wochen einer Kommolitonin bei einer Matheaufgabe für ihre Kids gearbeitet.
Die Aufgabe war: "Du hast auf einer Landkarte beliebig viele Brunnen an beliebigen Punkten angeordnet...zeichne in die karte die Flächen ein, um immer den kürzesten Weg zu einem Brunnen zu haben"
im Prinzip einfach lösbar...naja...zumindest hab ich mich hingesetzt und hab eine neue online-lösung geschrieben. Man kann zwar die Punkte nicht eingeben
aber wenigstens sieht man das prinzip
Brunnenproblem
points.php
<?php
session_start();
if($_GET['width'] > 500 or $_GET['height'] > 500) {
die('Choose smaller size, less than 500';
}
if($_GET['n'] > 20) {
die('Please Choose lesser points...less then 20';
}
$arr = array();
for($i = 0; $i < $_GET['n']; $i++) {
$arr[] = rand(0,$_GET['width']).','.rand(0,$_GET['height']);
}
$_SESSION['width'] = $_GET['width'];
$_SESSION['height'] = $_GET['height'];
$_SESSION['points'] = join(';',$arr);
print '<img src="pics.php">';
?>
pics.php
<?php
session_start();
header('Content-type:image/png';
$picture = array(
'width' => $_SESSION['width'],
'height' => $_SESSION['height']
);
$im = @imagecreate($picture['width'],$picture['height']);
$points = array();
$colors = array();
$white = ImageColorAllocate($im,0,0,0);
$p = explode(';',$_SESSION['points']);
for($i = 0; $i < count($p); $i++) {
list($points[$i]['x'],$points[$i]['y']) = explode(',',$p[$i]);
$colors[$i] = ImageColorAllocate($im,rand(0,255),rand(0,255),rand(0,255));
}
for($x = 0; $x <= $picture['width']; $x++) {
for($y = 0; $y <= $picture['height']; $y++) {
$shortestDistance = array(
'distance' => ceil(sqrt(pow($picture['width'],2)+pow($picture['height'],2))),
'point' => 0
);
for($i = 0; $i < count($points); $i++) {
$d = sqrt(pow(($x-$points[$i]['x']),2)+pow(($y-$points[$i]['y']),2));
if($d < $shortestDistance['distance']) {
$shortestDistance = array(
'distance' => $d,
'point' => $i
);
}
}
$p = $shortestDistance['point'];
imagesetpixel($im,$x,$y,$colors[$p]);
}
}
for($i = 0; $i < count($points); $i++) {
imagesetpixel($im,$points[$i]['x'],$points[$i]['y'],$white);
imagesetpixel($im,$points[$i]['x']+1,$points[$i]['y'],$white);
imagesetpixel($im,$points[$i]['x']-1,$points[$i]['y'],$white);
imagesetpixel($im,$points[$i]['x'],$points[$i]['y']+1,$white);
imagesetpixel($im,$points[$i]['x'],$points[$i]['y']-1,$white);
imagesetpixel($im,$points[$i]['x']+2,$points[$i]['y'],$white);
imagesetpixel($im,$points[$i]['x']-2,$points[$i]['y'],$white);
imagesetpixel($im,$points[$i]['x'],$points[$i]['y']+2,$white);
imagesetpixel($im,$points[$i]['x'],$points[$i]['y']-2,$white);
}
ImagePNG($im);
?>