Advertisement
Guest User

plain_diagram

a guest
Apr 10th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.27 KB | None | 0 0
  1. <?php
  2.     $host = 'localhost';
  3.     $db   = 'fembd';
  4.     $user = 'root';
  5.     $password = 'root';
  6.  
  7.     try {
  8.         $pdo = new PDO("mysql:host=$host; dbname=$db;", $user, $password);
  9.         $pdo->exec("set names utf8");
  10.         $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  11.     } catch (PDOException $e) {
  12.         print "Не удалось подключиться к базе данных! ".$e->getMessage();
  13.         exit();
  14.     }
  15.  
  16.     $sql = "SELECT elements.id, nodes.x, nodes.y
  17.         FROM elements, nodes
  18.         WHERE nodes.id = elements.n1
  19.         OR nodes.id = elements.n2
  20.         OR nodes.id = elements.n3";
  21.  
  22.     try {
  23.         $result = $pdo->prepare($sql);
  24.     } catch (PDOException $e) {
  25.         print "Не удаётся соединиться с базой данных".$e->getMessage();
  26.         exit();
  27.     }
  28.  
  29.     try {
  30.             $result->execute();
  31.         }
  32.     catch (PDOException $e) {
  33.         if ($e->getCode() == 42000) {
  34.             print "Не достаточно прав доступа для выполнения запроса:(".$e->getMessage();
  35.         }
  36.  
  37.         else {
  38.             print "Не удалось выполнить обращение к базе данных:  ".$e->getMessage();
  39.         }
  40.  
  41.         exit();
  42.     }
  43.  
  44.     $rownum = $result->rowcount();
  45.     if($rownum == 0){
  46.         print "Вернулся пустой результат!";
  47.         exit();
  48.     }
  49.  
  50.     $elem_num = $rownum / 3;
  51.     for ($i=0; $i<$elem_num; $i++){
  52.         $node1 = $result->fetch();
  53.         $node2 = $result->fetch();
  54.         $node3 = $result->fetch();
  55.         $centerx[$i] = ($node1[1] + $node2[1] + $node3[1]) / 3;
  56.         $centery[$i] = ($node1[2] + $node2[2] + $node3[2]) / 3;
  57.     }
  58.  
  59.     $sector_num = 5;
  60.  
  61.     $quadrant = array(0, 0, 0, 0, 0);
  62.  
  63.     for ($i = 0; $i < $elem_num; ++$i) {
  64.         $x = $centerx[$i];
  65.         $y = $centery[$i];
  66.         if ($x > 0 && $y > 0)
  67.             ++$quadrant[1];
  68.         else if ($x < 0 && $y > 0)
  69.             ++$quadrant[2];
  70.         else if ($x < 0 && $y < 0)
  71.             ++$quadrant[3];
  72.         else if ($x > 0 && $y < 0)
  73.             ++$quadrant[4];
  74.         else
  75.             ++$quadrant[0];
  76.     }
  77.    
  78.     header("Content-type: image/png");
  79.     $img = @imagecreate(900, 600)
  80.         or die("Cannot Initialize new GD image stream");
  81.  
  82.     $white = imagecolorallocate($img, 255, 255, 255);
  83.     $black = imagecolorallocate($img, 0, 0, 0);
  84.  
  85.     $red = 0;
  86.     $green = 255;
  87.     $blue = 25;
  88.  
  89.     $x_d = 300;
  90.     $y_d = 300;
  91.  
  92.     $x_w = 600;
  93.     $y_w = 100;
  94.  
  95.     $width = 300;
  96.     $height = 300;
  97.  
  98.     $start_angle = 0;
  99.     $end_angle = 0;
  100.  
  101. /*  $quadrant[0]++;
  102.     $quadrant[3]--; */
  103.  
  104.     imagesetpixel($img, 300, 300, $black);
  105.  
  106.     for ($i = 0; $i < $sector_num; $i++){
  107.         $diagram[$i] = imagecolorallocate($img, $red, $green, $blue);
  108.         $end_angle += 360*($quadrant[$i]/$elem_num);
  109.         imagefilledarc($img, $x_d, $y_d, $width, $height, $start_angle, $end_angle, $diagram[$i], IMG_ARC_PIE);
  110.         if ($i > 0)
  111.             imagestring($img, 5, $x_w, $y_w, "Quadrant $i", $diagram[$i]);
  112.         else
  113.             imagestring($img, 5, $x_w, $y_w, "Exception (border)", $diagram[$i]);
  114.         $start_angle = $end_angle;
  115.         $red += 50;
  116.         $green -= 50;
  117.         $blue *= 2;
  118.         $y_w += 98;
  119.     }
  120.  
  121.     imagepng($img);
  122.     imagedestroy($img);
  123.  
  124. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement