Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- session_start();
- $h = 0;
- $r = 0;
- $t = 0;
- $_SESSION['flag'] = false;
- if((isset($_POST["height"]) && isset($_POST["radious"]) && isset($_POST["angle"])) && (!empty($_POST["height"])&&!empty($_POST["radious"]) && !empty($_POST["angle"])) &&
- (is_numeric($_POST["height"]) && is_numeric($_POST["radious"]) && is_numeric($_POST["angle"]))){
- $h = floatval($_POST["height"]);
- $r = floatval($_POST["radious"]);
- $t = intval($_POST["angle"]);
- $_SESSION['r'] = $r;
- $_SESSION['h'] = $h;
- $_SESSION['flag'] = true;
- }else{
- $_SESSION['msg'] = "Введите данные!";
- header('Location: index.php');
- }
- $width = 600;
- $height = 600;
- $image = imagecreatetruecolor($width, $height);
- $back = imagecolorallocate($image, 255, 255, 255);// для фона
- $ax = imagecolorallocate($image, 0, 0, 0);// для осей
- $line = imagecolorallocate($image, 168, 82, 189);// для графика
- $red = imagecolorallocate($image, 255, 0, 0);// цвет засечек
- $text = imagecolorallocate($image, 0, 124, 115); // цвет для текста
- imagefill($image, 0, 0, $back);
- $scale = 7;// масштаб
- $x = [];
- $y = [];
- $x1 = [];
- $y1 = [];
- $j = 0;
- for ($k = 0; $k <= $t*M_PI; $k += 0.01) {
- $x[$j] = $r * $k - $h * sin($k);
- $y[$j] = $r - $h * cos($k);
- $j++;
- }
- $widY = 0;
- $flag = true;
- $miny = min($y);
- $maxy = max($y);
- for ($i = 0; $i < count($x); $i++) {
- if($x[$i] > 0 and $i > 0 and $flag == true){
- $widY = $x[$i] * $scale + $width / 15;
- $flag = false;
- }
- $x1[$i] = $width / 15 + $x[$i] * $scale;
- $y1[$i] = $height / 2 - $y[$i] * $scale;
- if($x1[$i] < $width - $width / 25 - 15){
- imagesetpixel($image, $x1[$i], $y1[$i], $line);
- }else{
- break;
- }
- }
- imageline($image, 5, $height / 2, $width - $width / 25, $height / 2, $ax); // ось х
- imageline($image, $widY, $height / 15, $widY, $height - $height / 15, $ax); // ось y
- imagestring($image, 5, $width - $width / 35 , $height / 2 - 10, "x", $ax);// "x"
- imagestring($image, 5, $width / 15 - 5 , $height / 15 - 20, "y", $ax);// "y"
- imageline($image, $width - $width / 25, $height / 2, $width - $width / 25 - 10, $height / 2 - 5, $ax);// для стрелочки на х
- imageline($image, $width - $width / 25, $height / 2, $width - $width / 25 - 10, $height / 2 + 5, $ax);// для стрелочки на х
- imageline($image, $widY, $height / 15, $widY - 5, $height / 15 + 10, $ax);// для стрелочки на y
- imageline($image, $widY, $height / 15, $widY + 5, $height / 15 + 10, $ax);// для стрелочки на y
- $j = $width / 15;
- imagestring($image, 5, $widY - 10 , $height / 2, "0", $text);
- while($j < $width - $width / 25 ){
- $j+= M_PI * $scale;
- if($j < $width - $width / 25){
- imageline($image, $j, $height / 2 - 5, $j, $height / 2 + 5, $red);// засечки на оси х в точке экстремумов
- $str = round($j/$scale);
- imagestring($image, 2, $j, $height / 2 + 15, $str, $text);// подпись зачески на x
- }
- }
- // засечка для минимальной точки экстремума
- imageline($image, $widY - 5, $height / 2 - $miny * $scale, $widY + 5, $height / 2 - $miny * $scale, $red);
- imagestring($image, 2, $widY - 30 , $height / 2 - $miny * $scale, round($miny, 2), $text); // подпись зачески на y min
- // засечка для максимальной точки экстремума
- imageline($image, $widY - 5, $height / 2 - $maxy * $scale, $widY + 5, $height / 2 - $maxy * $scale, $red);
- imagestring($image, 2, $widY - 30 , $height / 2 - $maxy * $scale, round($maxy, 2), $text); // подпись зачески на y max
- imagepng($image,'graf.png');
- imagedestroy($image);
- header('Location: index.php');
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement