All pastes #92536 Raw Edit

Something

public text v1 · immutable
#92536 ·published 2006-07-19 17:11 UTC
rendered paste body
<?
#c = array (
#   array(44368,107440,-2032),
#   array(46080,108968,-2032),
#   array(44400,110644,-2032),
#   array(42988,109652,-2032),
#   array(43004,108928,-2032)
#);
$c = array (
    array(150694,114119,-5519),
    array(151755,114876,-5519),
    array(151878,115383,-5519),
    array(151158,115993,-5519),
    array(150340,116049,-5519),
    array(149924,115430,-5519),
    array(149834,114597,-5519),
    array(150161,114144,-5519)
);

 function isInTriangle($xa,$ya,$xb,$yb,$xc,$yc,$xd,$yd) {
    $delta_ab=($xa-$xb)^2+($ya-$yb)^2;
    $delta_ac=($xa-$xc)^2+($ya-$yc)^2;
    $delta_bc=($xb-$xc)^2+($yb-$yc)^2;
    $delta_ad=($xa-$xd)^2+($ya-$yd)^2;
    $delta_bd=($xb-$xd)^2+($yb-$yd)^2;
    $delta_cd=($xc-$xd)^2+($yc-$yd)^2;

    if ($delta_ac+$delta_bc<$delta_ad+$delta_bd) return 0;
    if ($delta_bc+$delta_ab<$delta_ad+$delta_cd) return 0;
    if ($delta_ab+$delta_ac<$delta_bd+$delta_cd) return 0;

    return 1;

}
    $xx = array();
    $xy = array();
    for ($i=0; $i<count($c); $i++) {
        $xx[]=$c[$i][0];
        $xy[]=$c[$i][1];
    };
    sort($xx);
    sort($xy);
    $minx=$xx[0];
    $maxx=$xx[count($xx)-1];
    $miny=$xy[0];
    $maxy=$xy[count($xy)-1];
    $im = @imagecreate(2000,2000) or die("error");;
    echo "test";
    $black = imagecolorallocate($im, 0,0,0);
    imagefill($im,0,0,$black);
    $red = imagecolorallocate($im, 255,0,0);
    $x=$c[0][0]; $y=$c[0][1];
    for ($i=1; $i<count($c)-1; $i++) {
        imageline($im,$x/100,$y/100,$c[$i][0]/100,$c[$i][1]/100,$red);
        $x=$c[$i][0]; $y=$c[$i][1];
    };
    imageline($im,$x/100,$y/100,$c[0][0]/100,$c[0][1]/100,$red);
    imagepng($im,"test.png");
    $i=0; $j=0;
    // how many points to generate
    $N=5;
    unset($mob);
    $mob=array();
    //x from min X to max X
    for ($x=$minx+50; $x<$maxx-50; $x=$x+200) {
        //y from min Y to max Y
        for ($y=$miny+50; $y<$maxy-50; $y=$y+200) {
            $j=$j+1;
            $b=0;
            for ($a=1; $a<count($c)-2; $a++)
                $b=$b+isInTriangle($c[0][0],$c[0][1],
                                $c[$a][0],$c[$a][1],
                                $c[$a+1][0],$c[$a+1][1],
                                $x,$y);
            if ($b>0) {
                $mob[]=array($x,$y,$c[0][2]);
                echo "valid coords: $x,$y,".$c[0][2]."\n";
                $i=$i+1;
            };
        };
    };
    if (count($mob)>=$N) {
        for ($i=0; $i<$N; $i++) {
            $a=rand(0,count($mob)-1);
            while ($mob[$a][0]==0) $a=rand(0,count($mob));
            echo "picked coords: ".$mob[$a][0].",".$mob[$a][1].",".$c[0][2]."\n";
            $mob[$a][0]=0;
        }
    }

echo "$i   $j";
?>