$dy = 1.0 * ($ymax - $ymin) / $nypoints; $cscale = 240.0 / ($zmax - $zmin); $x = $xmin; for ($i = 0; $i < $nxpoints; $i++) { $y = $ymin; for ($j = 0; $j < $nypoints; $j++) { $z1 = func($x, $y); $z2 = func($x + $dx, $y); $z3 = func($x + $dx, $y + $dy); $z4 = func($x, $y + $dy); $c1 = $cscale * ($z1 - $zmin); $c2 = $cscale * ($z2 - $zmin); $c3 = $cscale * ($z3 - $zmin); $c4 = $cscale * ($z4 - $zmin); $c = ($c1 + $c2 + $c3 + $c4) / 4; if ($c < 0) { $c = 0; } if ($c > 239) { $c = 239; } $p3->solidquad($x, $y, $z1, $x + $dx, $y, $z2, $x + $dx, $y + $dy, $z3, $x, $y + $dy, $z4, $c + 16); $y = $y + $dy; } $x = $x + $dx; } } print "Making a nice 3D plot...\n"; drawsolid(); $frame->writeGIF($cmap, "image.gif"); print "Wrote image.gif\n";