Advertisement
100hahahaha

graf

Oct 23rd, 2024
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.83 KB | None | 0 0
  1. <?php
  2. session_start();
  3.  
  4. $h = 0;
  5. $r = 0;
  6. $t = 0;
  7. $_SESSION['flag'] = false;
  8. if((isset($_POST["height"]) && isset($_POST["radious"]) && isset($_POST["angle"])) && (!empty($_POST["height"])&&!empty($_POST["radious"]) && !empty($_POST["angle"]))  &&
  9. (is_numeric($_POST["height"]) && is_numeric($_POST["radious"]) && is_numeric($_POST["angle"]))){
  10.     $h = floatval($_POST["height"]);
  11.     $r = floatval($_POST["radious"]);
  12.     $t = intval($_POST["angle"]);
  13.     $_SESSION['r'] = $r;
  14.     $_SESSION['h'] = $h;
  15.     $_SESSION['flag'] = true;
  16. }else{
  17.     $_SESSION['msg'] = "Введите данные!";
  18.     header('Location: index.php');
  19. }
  20.  
  21. $width = 600;
  22. $height = 600;
  23. $image = imagecreatetruecolor($width, $height);
  24.  
  25. $back = imagecolorallocate($image, 255, 255, 255);// для фона
  26. $ax = imagecolorallocate($image, 0, 0, 0);// для осей
  27. $line = imagecolorallocate($image, 168, 82, 189);// для графика
  28. $red = imagecolorallocate($image, 255, 0, 0);// цвет засечек
  29. $text = imagecolorallocate($image, 0, 124, 115); // цвет для текста
  30.  
  31. imagefill($image, 0, 0, $back);
  32.  
  33.  
  34. $scale = 7;// масштаб
  35. $x = [];
  36. $y = [];
  37.  
  38. $x1 = [];
  39. $y1 = [];
  40.  
  41.  
  42. $j = 0;
  43.  
  44.  
  45.  
  46. for ($k = 0; $k <= $t*M_PI; $k += 0.01) {
  47.     $x[$j] = $r * $k - $h * sin($k);
  48.     $y[$j] = $r - $h * cos($k);
  49.     $j++;
  50. }
  51.  
  52. $widY = 0;
  53. $flag = true;
  54.  
  55. $miny = min($y);
  56. $maxy = max($y);
  57.  
  58. for ($i = 0; $i < count($x); $i++) {
  59.     if($x[$i] > 0 and $i > 0 and $flag == true){
  60.         $widY = $x[$i] * $scale + $width / 15;
  61.         $flag = false;
  62.     }
  63.     $x1[$i] = $width / 15 + $x[$i] * $scale;
  64.     $y1[$i] = $height / 2 - $y[$i] * $scale;
  65.  
  66.    
  67.     if($x1[$i] < $width - $width / 25 - 15){
  68.         imagesetpixel($image, $x1[$i], $y1[$i], $line);
  69.     }else{
  70.         break;
  71.     }
  72. }
  73.  
  74.  
  75. imageline($image, 5, $height / 2, $width - $width / 25, $height / 2, $ax); // ось х
  76. imageline($image, $widY, $height / 15, $widY, $height - $height / 15, $ax); // ось y
  77.  
  78. imagestring($image, 5, $width - $width / 35 , $height / 2 - 10, "x", $ax);// "x"
  79. imagestring($image, 5, $width / 15 - 5 , $height / 15 - 20, "y", $ax);// "y"
  80.  
  81. imageline($image, $width - $width / 25, $height / 2, $width - $width / 25 - 10, $height / 2 - 5, $ax);// для стрелочки на х
  82. imageline($image, $width - $width / 25, $height / 2, $width - $width / 25 - 10, $height / 2 + 5, $ax);// для стрелочки на х
  83.  
  84. imageline($image, $widY, $height / 15, $widY - 5, $height / 15 + 10, $ax);// для стрелочки на y
  85. imageline($image, $widY, $height / 15, $widY + 5, $height / 15 + 10, $ax);// для стрелочки на y
  86.  
  87. $j = $width / 15;
  88. imagestring($image, 5, $widY - 10 , $height / 2,  "0", $text);
  89. while($j < $width - $width / 25 ){
  90.     $j+= M_PI * $scale;
  91.     if($j < $width - $width / 25){
  92.         imageline($image, $j, $height / 2 - 5, $j, $height / 2 + 5, $red);// засечки на оси х в точке экстремумов
  93.         $str = round($j/$scale);
  94.         imagestring($image, 2, $j, $height / 2 + 15, $str, $text);// подпись зачески на x
  95.     }
  96. }
  97.  
  98.  
  99.  
  100. // засечка для минимальной точки экстремума
  101. imageline($image, $widY - 5, $height / 2 - $miny * $scale, $widY + 5, $height / 2 - $miny * $scale, $red);
  102. imagestring($image, 2, $widY - 30 , $height / 2 - $miny * $scale, round($miny, 2), $text); // подпись зачески на y min
  103. // засечка для максимальной точки экстремума
  104. imageline($image, $widY - 5, $height / 2 - $maxy * $scale, $widY + 5, $height / 2 - $maxy * $scale, $red);
  105. imagestring($image, 2, $widY - 30 , $height / 2 - $maxy * $scale, round($maxy, 2), $text); // подпись зачески на y max
  106.  
  107.  
  108.  imagepng($image,'graf.png');
  109.  imagedestroy($image);
  110.  
  111.  header('Location: index.php');
  112.  
  113. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement