<?php
function plotGraph($imgw, $imgh, $DT,$u){
$n = count($u);
$peak = 0.0;
for ($t = 0;$t < $n;$t++)
{
if (abs($u[$t]) > $peak) if (is_finite($u[$t])) $peak = abs($u[$t]);
}
$mgleft = $mgright = $mgtop = $mgbot = 20;
$x0 = 10;
$y0 = ($imgh - $mgtop - $mgbot) / 2;
$scx = ($imgw-40)/($n*$DT);
$scy = 160.0 / $peak / 2.0;
$ngx = 10;
$ngy = 4;
$sgx = ($imgw-$mgleft-$mgright-$x0)/$ngx;
$sgy = ($imgh-$mgtop-$mgbot)/$ngy;
$im = @imagecreatetruecolor($imgw, $imgh)
or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 200, 250, 250);
$line_color = imagecolorallocate($im, 233, 14, 91);
$grid_color = imagecolorallocate($im, 0, 233, 0);
for ($i=0; $i<=$ngx; $i++) {
$x1 = $mgleft+$x0+$i*$sgx;
imageline($im, $x1, $mgtop, $x1, $imgh-$mgbot, $grid_color);
$tbuff = sprintf("%d", $i*$sgx/$scx);
imagestring($im, 2, $x1, $imgh-$mgbot, $tbuff, $text_color);
};
$y1 = $y0+$mgtop;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("%d", 0);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
for ($i=1; $i <= $ngy/2; $i++) {
$y1 = $y0+$mgtop+$i*$sgy;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("-%d", $i*$sgy/$scy);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
$y1 = $y0+$mgtop-$i*$sgy;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("%d", $i*$sgy/$scy);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
}
$x1 = $x0+$mgleft; $y1 = $y0+$mgtop;
for ($i=0; $i<$n; $i++) {
$x2 = $i*$DT*$scx+$x0+$mgleft; $y2 = -$u[$i]*$scy+$y0+$mgtop;
if (($x2 > $x0) && ($x2 < ($imgw-$mgright)) && ($y1 > $mgtop) && ($y2 < ($imgh-$mgbot)))
imageline($im, $x1, $y1, $x2, $y2, $line_color);
$x1 = $x2; $y1 = $y2;
};
ob_start();
imagepng($im);
printf('<img src="data:image/png;base64,%s"/ width="$imgw">', base64_encode(ob_get_clean()));
}
function plotXYGraph($imgw, $imgh, $u){
$n = count($u);
$peak = 0.0;
for ($t = 0;$t < $n;$t++)
{
if (abs($u[$t][1]) > $peak) if (is_finite($u[$t][1])) $peak = abs($u[$t][1]);
}
$mgleft = $mgright = $mgtop = $mgbot = 20;
$x0 = 10;
$y0 = ($imgh - $mgtop - $mgbot) / 2;
$scx = ($imgw-40)/($u[$n-1][0]-$u[0][0]);
$scy = 160.0 / $peak / 2.0;
$ngx = 10;
$ngy = 4;
$sgx = ($imgw-$mgleft-$mgright-$x0)/$ngx;
$sgy = ($imgh-$mgtop-$mgbot)/$ngy;
$im = @imagecreatetruecolor($imgw, $imgh)
or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 200, 250, 250);
$line_color = imagecolorallocate($im, 233, 14, 91);
$grid_color = imagecolorallocate($im, 0, 233, 0);
for ($i=0; $i<=$ngx; $i++) {
$x1 = $mgleft+$x0+$i*$sgx;
imageline($im, $x1, $mgtop, $x1, $imgh-$mgbot, $grid_color);
$tbuff = sprintf("%d", $i*$sgx/$scx);
imagestring($im, 2, $x1, $imgh-$mgbot, $tbuff, $text_color);
};
$y1 = $y0+$mgtop;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("%d", 0);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
for ($i=1; $i <= $ngy/2; $i++) {
$y1 = $y0+$mgtop+$i*$sgy;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("-%d", $i*$sgy/$scy);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
$y1 = $y0+$mgtop-$i*$sgy;
imageline($im, $x0+$mgleft, $y1, $imgw-$mgright, $y1, $grid_color);
$tbuff = sprintf("%d", $i*$sgy/$scy);
imagestring($im, 2, $x0, $y1, $tbuff, $text_color);
}
$x1 = $x0+$mgleft; $y1 = $y0+$mgtop;
for ($i=1; $i<$n; $i++) {
$x2 = $u[$i][0]*$scx+$x0+$mgleft; $y2 = -$u[$i][1]*$scy+$y0+$mgtop;
if (($x2 > $x0) && ($x2 < ($imgw-$mgright)) && ($y1 > $mgtop) && ($y2 < ($imgh-$mgbot)))
imageline($im, $x1, $y1, $x2, $y2, $line_color);
$x1 = $x2; $y1 = $y2;
};
ob_start();
imagepng($im);
printf('<img src="data:image/png;base64,%s"/ width="$imgw">', base64_encode(ob_get_clean()));
}
?>
|