Вызывается из другой программы с параметрами.
// Устанавливаем масштаб (позже нужно его все-таки вычислять
// в зависимости от шага измерений) и названия выбираемых полей
// $diap - диапозон истинности кривых (все остальные данные игнорируем)
$k=18.51;
foreach ($id_key as $id => $value)
{
$y_opis=$y_opis+1;
foreach ($value as $name => $cur)
{$y_opis=$y_opis+1;}
}
$y_opis=$y_opis*$k;
$y=ABS($k*($start-$stop))+100+$y_opis;
$ystart=$start;
$im=imagecreate(600,$y);
$black= ImageColorAllocate($im,0,0,0);
$white= ImageColorAllocate($im,255,255,255);
$setka= ImageColorAllocate($im,50,50,80);
imagefilledrectangle ($im,0,0,600,$y,$white);
$red = imagecolorallocate ($im, 255, 0, 0);
/* Рисует пунктирную линию: 5 красных пикселов, 5 белых */
$style = array ($setka,$setka,$setka,$setka,$setka,$white,$white,$white,$white,$white);
imagesetstyle ($im, $style);
$j=0;
//Рисуем глубины (координатная сетка)
$glubina=(int)$ystart;
$im_line=new_im(0,0,0);
imagesetbrush ($im, $im_line);
for ( $y1=0 ; $y1 < ($y-150) ; $y1=$y1+$k ) {
IF (($glubina/10)==(int)($glubina/10))
{
imagestring ($im,4,0,$y1+50+$y_opis,"$glubina",$black);
imageline($im,40,$y1+50+$y_opis,550,$y1+50+$y_opis,$setka);
}
ELSE
{ imageline($im,50,$y1+50+$y_opis,550,$y1+50+$y_opis,IMG_COLOR_STYLED);}
$glubina=$glubina+1;
}
for ( $x1=0 ; $x1 < 500; $x1=$x1+20 )
{
imageline($im,$x1+50,50+$y_opis,$x1+50,$y-100+$y_opis,IMG_COLOR_STYLED);
}
imageline ($im,50,50+$y_opis,550,50+$y_opis, IMG_COLOR_STYLEDBRUSHED);
imageline ($im,50,$y-100+$y_opis,550,$y-100+$y_opis, IMG_COLOR_STYLEDBRUSHED);
imageline($im,50,50+$y_opis,50,$y-100+$y_opis,IMG_COLOR_STYLEDBRUSHED);
imageline($im,$x1+50,50+$y_opis,$x1+50,$y-100+$y_opis,IMG_COLOR_STYLEDBRUSHED);
$r=10;
$g=255;
$b=255;
$y_st=30;
foreach ($id_key as $id => $value)
{
foreach ($value as $name => $cur)
{
$im_line=new_im($r,$g,$b);
call_user_func (\'do_curve\',$id,$cur,$k,$name,$im,$y_st,$im_line,$ystart,$y_opis);
$r=$r+80;if ($r>255) {$r=20;}
$g=$g-55;if ($g<0) {$g=240;}
$b=$b-85;if ($b<0) {$b=240;}
$y_st=$y_st+20;
}
}
function new_im($r,$g,$b)
{
$im_line=imagecreate(2,2);
$col=registercolor($im_line,$r,$g,$b);
imagefilledrectangle ($im_line,0,0,2,2,$col);
return $im_line;
}
function registercolor($im,$r,$g,$b)
{
$color=imagecolorexact($im,$r,$g,$b);
IF ($color==-1)
{
$color= ImageColorAllocate($im,$r,$g,$b);
}
return $color;
}
function do_curve($id,$cur,$k,$name,$im,$y_st,$im_line,$ystart,$y_opis)
{
$sql="SELECT nul_var,date FROM opis_las WHERE uid=$id;";
$result = MYSQL_QUERY($sql);
$row = mysql_fetch_row($result);
$nul_var=$row[0];
$date_las=$row[1];
mysql_free_result($result);
$sql="SELECT MAX($cur),MIN($cur) FROM las WHERE uid=$id and !($cur=$nul_var);";
$result = MYSQL_QUERY($sql);
$row = mysql_fetch_row($result);
$x=($row[0]-$row[1]);
$xmax=$row[0];
$xmin=$row[1];
//вычисляем коэффициент по X
$kx=400/$x;
//вычисляем смещение по X
// если минимальное значение отрицательное
// или большое положительное
$x_dop=0-$xmin;
mysql_free_result($result);
//Читаем из бызы данных и рисуем картинку
//
//
//
//
$sql="SELECT strt,stop,step,nul_var FROM opis_las WHERE uid=$id;";
$result = MYSQL_QUERY($sql);
$row = mysql_fetch_row($result);
$nul_var=$row[3];
mysql_free_result($result);
$sql="SELECT curve1,$cur FROM las WHERE uid=$id order by 1;";
$result = MYSQL_QUERY($sql);
//перебираем массив и вычисляем координаты точек для линии
$count=mysql_num_rows($result)-1;
for ($i = 0; $i < $count; $i++)
{
mysql_data_seek($result, $i);
$row = mysql_fetch_row($result);
//проверяем на истинность данных
if ($row[1]==$nul_var) {continue;}
$y1=($row[0]-$ystart)*$k+$y_opis;
$x1=($row[1]+$x_dop)*$kx;
$j=$i+1;
mysql_data_seek($result, $j);
$row = mysql_fetch_row($result);
//проверяем на истинность данных
if ($row[1]==$nul_var) {continue;}
$y2=($row[0]-$ystart)*$k+$y_opis;
$x2=($row[1]+$x_dop)*$kx;
// рисуем отрезок
if ($x1==$x2 AND $y1==$y2) {continue;}
imagesetbrush ($im, $im_line);
imageline ($im,$x1+50,$y1+50,$x2+50,$y2+50, IMG_COLOR_STYLEDBRUSHED);
}
//Рисуем эталонный отрезок
$xmin=round($xmin,2);
$xmax=round($xmax,2);
imageline ($im, ($x_dop+$xmin)*$kx+50, $y_st, ($x_dop+$xmax)*$kx +50, $y_st, IMG_COLOR_STYLEDBRUSHED);
imagestring ($im,2,(($x_dop+$xmin)*$kx)+50,$y_st-13,"$xmin > $name $date_las < $xmax",$black);
}
imagepng($im);
imagedestroy($im);
?>