ex.

Code: Select all
function centroid($polygon,$n) {
$a = area($polygon,$n);
$cx = 0;
$cy = 0;
$polygon=array_chunk($polygon,2);
for ($i=0;$i<$n;$i++) {
$cx += ($polygon[$i][0] + $polygon[$i+1][0]) * ( ($polygon[$i][0]*$polygon[$i+1][1]) - ($polygon[$i+1][0]*$polygon[$i][1]) );
$cy += ($polygon[$i][1] + $polygon[$i+1][1]) * ( ($polygon[$i][0]*$polygon[$i+1][1]) - ($polygon[$i+1][0]*$polygon[$i][1]) );
}
return(array( (1/(6*$a))*$cx,(1/(6*$a))*$cy));
}
function area($polygon,$n) {
// based off my function here:
// viewtopic.php?t=41715&highlight=vertex+ordering
$polygon=array_chunk($polygon,2);
$area = 0;
for ($i=0;$i<$n;$i++) {
$j = ($i + 1);
$area += $polygon[$i][0] * $polygon[$j][1];
$area -= $polygon[$i][1] * $polygon[$j][0];
}
$area /= 2;
return(abs($area));
}