<?php header ("Content-type: image/png"); // Наша функция. function Graph($x, $y) { $z=$y*sin($x); return $z; } // цвет графика $r=30; // red $g=30; // green $b=60; // blue // 45 ГРАДУСОВ $alfa=deg2rad(45); // относительно оси 0Y 45 градусов $beta=deg2rad(45); // относительно оси 0X 45 градусов // границы графика по оси 0Y $Y_low=-70; $Y_up=70; // границы графика по оси 0X $X_low=-200; $X_up=200; $X_dec_max=600; $X_0=$X_dec_max/2; $left_X=-300; $right_X=300; $Y_dec_max=600; $Y_0=$Y_dec_max/2; $low_Y=-300; $top_Y=300; $im = ImageCreate($X_dec_max, $Y_dec_max); $bgcolor = ImageColorAllocate ($im, 250, 100, 200); $line_color = ImageColorAllocate ($im, 0, 0, 0); ImageLine($im, $X_0, $Y_0, $X_dec_max, $Y_dec_max/2, $line_color); ImageDashedLine($im, $X_0, $Y_0, 0, $Y_dec_max/2, $line_color); ImageLine($im, $X_0, $Y_0, $X_0, 0, $line_color); ImageDashedLine($im, $X_0, $Y_0, $X_0, $Y_dec_max, $line_color); ImageLine($im, $X_0, $Y_0, $left_X/cos($alfa), $Y_dec_max-$low_Y/cos($alfa), $line_color); ImageDashedLine($im, $X_0, $Y_0, $right_X/cos($alfa), $Y_dec_max-$top_Y/cos($alfa), $line_color); $text_color=ImageColorAllocate ($im, 80, 0, 160); ImageString($im, 3, $X_0+5, $Y_dec_max-$Y_0, "0", $text_color); ImageString($im, 3, $X_0+$right_X-10, $Y_dec_max-$Y_0, "X", $text_color); ImageString($im, 3, $X_0+5, $Y_dec_max-($Y_0+$top_Y-5), "Y", $text_color); ImageString($im, 3, 3, $Y_dec_max-20, "Z", $text_color); $pol_color=ImageColorAllocate($im, 0, 0, 0); $pol_pic[0]=0; $pol_pic[1]=$Y_dec_max; $pol_pic[2]=10; $pol_pic[3]=$Y_dec_max-5; $pol_pic[4]=5; $pol_pic[5]=$Y_dec_max-8; ImageFilledPolygon($im, $pol_pic, 3, $pol_color); $pol_pic[0]=$X_dec_max; $pol_pic[1]=$Y_0; $pol_pic[2]=$X_dec_max-10; $pol_pic[3]=$Y_0-3; $pol_pic[4]=$X_dec_max-10; $pol_pic[5]=$Y_0+3; ImageFilledPolygon($im, $pol_pic, 3, $pol_color); $pol_pic[0]=$X_0; $pol_pic[1]=0; $pol_pic[2]=$X_0-3; $pol_pic[3]=10; $pol_pic[4]=$X_0+3; $pol_pic[5]=10; ImageFilledPolygon($im, $pol_pic, 3, $pol_color); // *******ГОРИЗОНТАЛЬНАЯ*СЕТКА********************************************* $X3d=0; $Y3d=0; $X3d_0=0; $Y3d_0=0; $shag=3; $Z3d_0=0; $X3d_0=0; $X2d_0=0; $Y2d_0=0; // границы по оси 0Y for($Y3d=$Y_low, $j=1; $Y3d<=$Y_up; $Y3d=$Y3d+$shag, $j++) { // в зависимости от делителя, регулируется разряженность 3-х мерного графика $delit=2; // делитель $delit $del_j=$j/$delit; $del_cel_j=floor($del_j); $ost_j=$del_j-$del_cel_j; $ost_abs_j=abs($ost_j); if($ost_abs_j == 0) { // границы по оси 0X for ($X3d=$X_low, $i=1; $X3d<=$X_up; $X3d=$X3d+$shag, $i++) { if($X3d!=0) { $del=$i/2; $del_cel=floor($del); $ost=$del-$del_cel; $ost_abs=abs($ost); if($ost_abs == 0) { // $Y3d=50; // обращение к функции $Z3d=Graph($X3d, $Y3d); // преобразование 3d в 2d $X2d=$X3d-$Z3d*cos($beta); $Y2d=$Y3d-$Z3d*cos($alfa); $pix_color=ImageColorAllocate($im, $r, $g, $b); // 2-d плоскость // ImageSetPixel($im, ($X_dec_max/2)+$X3d, $Y_dec_max-($Y_dec_max/2+$Z3d), $pix_color); // ImageLine($im, ($X_dec_max/2)+$X3d, $Y_dec_max-($Y_dec_max/2+$Z3d), ($X_dec_max/2)+$X3d_1, $Y_dec_max-($Y_dec_max/2+$Z3d_1), $pix_color); $X3d_1=$X3d_0; $Z3d_1=$Z3d_0; $X3d_0=$X3d; $Z3d_0=$Z3d; // 3-d плоскость if($i!=0) { if($i!=1) { if($i!=2) { if($i!=4) { ImageSetPixel($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), $pix_color); ImageLine($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), ($X_dec_max/2)+$X2d_1, $Y_dec_max-($Y_dec_max/2+$Y2d_1), $pix_color); } } } } $X2d_1=$X2d_0; $X2d_0=$X2d; $Y2d_1=$Y2d_0; $Y2d_0=$Y2d; } } } } } // ********ВЕРТИКАЛЬНАЯ*СЕТКА******************************************** $X3d=0; $Y3d=0; $X3d_0=0; $Y3d_0=0; $shag=3; $Z3d_0=0; $X3d_0=0; $X2d_0=0; $Y2d_0=0; // границы по оси 0X for($X3d=$X_low, $j=1; $X3d<=$X_up; $X3d=$X3d+$shag, $j++) { // в зависимости от делителя, регулируется разряженность 3-х мерного графика $delit=2; // делитель $delit $del_j=$j/$delit; $del_cel_j=floor($del_j); $ost_j=$del_j-$del_cel_j; $ost_abs_j=abs($ost_j); if($ost_abs_j == 0) { // границы по оси 0Y for ($Y3d=$Y_low, $i=1; $Y3d<=$Y_up; $Y3d=$Y3d+$shag, $i++) { if($X3d!=0) { $del=$i/2; $del_cel=floor($del); $ost=$del-$del_cel; $ost_abs=abs($ost); if($ost_abs == 0) { // $Y3d=50; // обращение к функции $Z3d=Graph($X3d, $Y3d); // преобразование 3d в 2d $X2d=$X3d-$Z3d*cos($beta); $Y2d=$Y3d-$Z3d*cos($alfa); $pix_color=ImageColorAllocate($im, $r, $g, $b); // 2-d плоскость // ImageSetPixel($im, ($X_dec_max/2)+$X3d, $Y_dec_max-($Y_dec_max/2+$Z3d), $pix_color); // ImageLine($im, ($X_dec_max/2)+$X3d, $Y_dec_max-($Y_dec_max/2+$Z3d), ($X_dec_max/2)+$X3d_1, $Y_dec_max-($Y_dec_max/2+$Z3d_1), $pix_color); $X3d_1=$X3d_0; $Z3d_1=$Z3d_0; $X3d_0=$X3d; $Z3d_0=$Z3d; // 3-d плоскость if($i!=0) { if($i!=1) { if($i!=2) { if($i!=4) { ImageSetPixel($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), $pix_color); ImageLine($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), ($X_dec_max/2)+$X2d_1, $Y_dec_max-($Y_dec_max/2+$Y2d_1), $pix_color); } } } } $X2d_1=$X2d_0; $X2d_0=$X2d; $Y2d_1=$Y2d_0; $Y2d_0=$Y2d; } } } } } ImagePng ($im); ?> |