Napisałem skrypt który generuje mi wysepkę:
<?php
header("Content-Type: image/png");
$w=500;
$h=400;
$obraz=imagecreatetruecolor($w,$h);
$bg=imagecolorallocate($obraz,200,200,200);
imagefill($obraz,1,1,$bg);
imagecolortransparent($obraz,$bg);
$red=imagecolorallocate($obraz,255,0,0);
$black=imagecolorallocate($obraz,0,0,0);
$green=imagecolorallocatealpha($obraz,0,255,0,60);
$x=20;
$y=0;
$old_x=rand(20,40);
$old_y=rand(20,40);
$start_x=$old_x;
$start_y=$old_y;
for ($i=$old_y; $i<=$h-20; $i=$i+5)
{
$add=rand(-5,5);
if ($x + $add < 10)
{
$add=-$add;
}
$x+=$add;
imageline($obraz,$old_x,$old_y,$x,$i, $black);
$old_x=$x;
$old_y=$i;
}
$y=$old_y;
for ($i=$old_x; $i<=$w-20; $i=$i+5)
{
$add=rand(-5,5);
if ($y + $add > $h-20)
{
$add=-$add;
}
$y+=$add;
imageline($obraz,$old_x,$old_y,$i,$y, $black);
$old_x=$i;
$old_y=$y;
}
$x=$old_x;
for ($i=$old_y; $i>=20; $i=$i-5)
{
$add=rand(-5,5);
if ($x + $add > $w-20)
{
$add=-$add;
}
$x+=$add;
imageline($obraz,$old_x,$old_y,$x,$i, $black);
$old_x=$x;
$old_y=$i;
}
$y=$old_y;
for ($i=$old_x; $i>=30; $i=$i-5)
{
$add=rand(-5,5);
if ($y + $add < 20)
{
$add=-$add;
}
$y+=$add;
imageline($obraz,$old_x,$old_y,$i,$y, $black);
$old_x=$i;
$old_y=$y;
}
imageline($obraz,$old_x,$old_y,$start_x,$start_y,$black);
imagefill($obraz,$w/2,$h/2, $green);
for ($i=50; $i<=$w; $i=$i+50)
{
imageline($obraz,$i,0,$i,$h,$red);
}
for ($i=50; $i<=$h; $i=$i+50)
{
imageline($obraz,0,$i,$w,$i,$red);
}
imagerectangle($obraz,1,1,$w-1,$h-1,$red);
imagepng($obraz);
imagedestroy($obraz);
?>
Jak teraz sprawdzić która kratka jest "pusta" tzn jej środek nie zawiera się w zielonym kolorze? Siatka jest 50x50px