<?php header ("Content-type: image/png"); // ПАРАМЕТРИЧЕСКАЯ ФУНКЦИЯ // ТОР // Наши функции. function Graph_X($R_param, $a_param, $u, $fi) { $X = ($R_param + $a_param*cos($u)) * cos($fi); return $X; } function Graph_Y($R_param, $a_param, $u, $fi) { $Y = ($R_param + $a_param*cos($u)) * sin($fi); return $Y; } function Graph_Z($R_param, $a_param, $u, $fi) { $Z = $a_param*sin($u); return $Z; } // цвет графика $r=60; // red $g=30; // green $b=30; // blue // 45 ГРАДУСОВ $alfa=45; // относительно оси 0Y $beta=45; // относительно оси 0X // границы графика по оси 0Y $u_low=deg2rad(0); $u_up=deg2rad(360); // границы графика по оси 0X $fi_low=deg2rad(0); $fi_up=deg2rad(360); // параметры графика $R_param=100; $a_param=50; $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, 100, 250, 150); $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($beta), $Y_dec_max-$low_Y/cos($alfa), $line_color); ImageDashedLine($im, $X_0, $Y_0, $right_X/cos($beta), $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); // *******ГОРИЗОНТАЛЬНАЯ*СЕТКА********************************************* $X2d_0=0; $Y2d_0=0; $shag=0.2; // границы по "u" for($u3d=$u_low, $j=1; $u3d<=$u_up; $u3d=$u3d+$shag, $j++) { // границы по "fi" for ($fi3d=$fi_low, $i=1; $fi3d<=$fi_up; $fi3d=$fi3d+$shag, $i++) { // обращение к функциям $X3d=Graph_X($R_param, $a_param, $u3d, $fi3d); $Y3d=Graph_Y($R_param, $a_param, $u3d, $fi3d); $Z3d=Graph_Z($R_param, $a_param, $u3d, $fi3d); // преобразование 3d в 2d $X2d=$X3d-$Z3d*cos($beta); $Y2d=$Y3d-$Z3d*cos($alfa); // 3-d плоскость $pix_color=ImageColorAllocate($im, $r, $g, $b); ImageSetPixel($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), $pix_color); if($i!=0) { if($i!=1) { if($j!=0) { if($j!=1) { 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); } } } } // ImageString($im, 1, $j*25, $i*15, "$u3d ", $pix_color); $X2d_1=$X2d_0; $X2d_0=$X2d; $Y2d_1=$Y2d_0; $Y2d_0=$Y2d; } } // ********ВЕРТИКАЛЬНАЯ*СЕТКА******************************************** $X2d_0=0; $Y2d_0=0; $shag=0.2; // границы по "fi" for($fi3d=$fi_low, $j=1; $fi3d<=$fi_up; $fi3d=$fi3d+$shag, $j++) { // границы по "u" for ($u3d=$u_low, $i=1; $u3d<=$u_up; $u3d=$u3d+$shag, $i++) { // обращение к функциям $X3d=Graph_X($R_param, $a_param, $u3d, $fi3d); $Y3d=Graph_Y($R_param, $a_param, $u3d, $fi3d); $Z3d=Graph_Z($R_param, $a_param, $u3d, $fi3d); // преобразование 3d в 2d $X2d=$X3d-$Z3d*cos($beta); $Y2d=$Y3d-$Z3d*cos($alfa); // 3-d плоскость $pix_color=ImageColorAllocate($im, $r, $g, $b); ImageSetPixel($im, ($X_dec_max/2)+$X2d, $Y_dec_max-($Y_dec_max/2+$Y2d), $pix_color); if($i!=0) { if($i!=1) { if($j!=0) { if($j!=1) { 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); } } } } // ImageString($im, 1, $j*25, $i*15, "$u3d ", $pix_color); $X2d_1=$X2d_0; $X2d_0=$X2d; $Y2d_1=$Y2d_0; $Y2d_0=$Y2d; } } ImagePng ($im); ?> |