Source for file Star.class.php

Documentation is available at Star.class.php

  1. <?php
  2. /**
  3.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  4.  * @copyright Copyright (C) 2008, Takács Ákos
  5.  * @package REPHPGraph
  6.  */
  7.  
  8. /**
  9.  * Aobject importálása
  10.  */
  11. require_once dirname(__FILE__)."/../AObject.class.php";
  12.  
  13. /**
  14.  * IObject importálása
  15.  */
  16. require_once dirname(__FILE__)."/../interfaces/IObject.class.php";
  17.  
  18.  
  19. /**
  20.  * Csillag alakzat
  21.  * 
  22.  * Akárhány ágú, és tetszőleges ághosszú szabályos csillagot hoz létre.
  23.  * Megadható ezeken kívül a csillag színe, a csillag szegélyének színe,
  24.  * illetve hogy a csillag héttere látható legyen, vagy áttetsző,
  25.  * valamint a csillag sugara és az elforgatás szöge.
  26.  * De ez a funkció csak akkor működik, ha a kép típusát GIF-ként vagy PNG-ként definiáltuk.
  27.  * <br />
  28.  * Egy egyszerű példa, mely 5 ágú, szabályos csillagot hoz létre. fehér színnel, és kék szegéllyel.
  29.  * {@example ../examples/star.php}
  30.  * 
  31.  * @version 1.0
  32.  * @package REPHPGraph
  33.  */
  34. class Star extends AObject implements IObject
  35. {
  36.     /**
  37.      * Csillag sugara. Középtől a csúcsig
  38.      * @var int 
  39.      */
  40.     protected $radius = 80;
  41.     /**    
  42.      * Ágak száma
  43.      * @var int 
  44.      */
  45.     protected $numPoint = 5;
  46.     /**
  47.      * Ágak hossza
  48.      * @var int 
  49.      */
  50.     protected $lenPoint = 40;
  51.     /**
  52.      * Az ősosztály __set() metódusában nem definiált értékadások
  53.      */
  54.     function __set($var,$value
  55.     {
  56.         switch ($var)
  57.         {
  58.             case 'radius'case 'numPoint'case 'lenPoint'
  59.                 $value = (int)$value;
  60.                 $this->$var $value;
  61.                 break;                      
  62.             defaultparent::__set($var$value);
  63.         }        
  64.     }
  65.     /**
  66.      * Az ősosztály __get() metódusában még nem definiált változó lekérdezések
  67.      */
  68.     function __get($var)
  69.     {
  70.         switch ($var)
  71.         {
  72.             case 'radius'case 'numPoint'case 'lenPoint'
  73.                 return $this->$var;
  74.                 break;
  75.             defaultreturn parent::__get($var);
  76.         }
  77.     }       
  78.     /**
  79.      * csillag példányosítása
  80.      * @param int $radius Csillag sugara
  81.      */
  82.     function Star($radius)
  83.     {
  84.         //sugár beállítása, és abból a szélesség számítása
  85.         $this->radius = $radius;
  86.         $this->width = $radius;
  87.         $this->height = $radius;
  88.         //Kép létrehozása
  89.         $this->source = imagecreatetruecolor($this->width,$this->height);
  90.  
  91.         //háttér és szín beállítása
  92.         $this->backGround = imageColorAllocate($this->source,1,1,1);
  93.         $this->color = imageColorAllocate($this->source,1,1,1);
  94.         $this->borderColor = imageColorAllocate($this->source,1,1,1);
  95.         
  96.     }
  97.     /**
  98.      * Létrehozza a csillag alakzatot
  99.      * 
  100.      * A már megadott tulajdonságok alapján létrehoz egy szabályos csillag alakzatot
  101.      */
  102.     function create()
  103.     {
  104.         //Távolság a csillag közepe és a csócsai között
  105.         $R2 $this->radius;
  106.         //Távolás a csillag közepe, és az ágak kezdete között
  107.         $R1 $this->radius - $this->lenPoint;
  108.         //Ágak hossza
  109.         $numPoint $this->numPoint;
  110.         //elforgatás szöge
  111.         $angle $this->angle;
  112.         //csúcsok közti szögelfordulás kiszámítása
  113.         $space 360 $numPoint;
  114.         //koordináták tömbje
  115.         $kulso_kor array('X'=>array(),'Y'=>array());
  116.         $belso_kor array('X'=>array(),'Y'=>array());
  117.         //egyező háttér és szegélyszín esetén új keretszín választása
  118.         if ($this->borderColor == $this->backGround{
  119.             if ($this->borderColor == ($color imagecolorAllocate($this->source,1,1,1))) {
  120.                 $this->borderColor = imageColorAllocate($this->source,0,0,0);
  121.             else {
  122.                 $this->borderColor = $color;
  123.             }
  124.         }
  125.         $color $this->borderColor$szam=0;
  126.         /* csúcspontok meghatározása :start:  */
  127.         for($i=90+$angle;$i<=450+$angle$i += $space{
  128.             $coord_x ($this->width / 2(cos(deg2rad($i)) $R1);
  129.             $coord_y ($this->height / 2)+(sin(deg2rad($i)) $R1)
  130.             $belso_kor['X'][$coord_x;
  131.             $belso_kor['Y'][$coord_y;
  132.             imagesetpixel($this->source,$coord_x,$coord_y,$color)
  133.         }
  134.         
  135.         $szam=0;
  136.         for($i=($space/2)+90+$angle;$i<=(360+(3*$space)/2)+90+$angle$i += $space{
  137.             $coord_x ($this->width / 2(cos(deg2rad($i)) $R2);
  138.             $coord_y ($this->height / 2)+(sin(deg2rad($i)) $R2)
  139.             $kulso_kor['X'][$coord_x;
  140.             $kulso_kor['Y'][$coord_y;
  141.             imagesetpixel($this->source,$coord_x,$coord_y,$color);
  142.         
  143.         /* csúcspontok meghatározása :end: */
  144.                 
  145.         $maxIndex count($belso_kor['X'])-1
  146.         //csúcspontok összekötése
  147.         for($i=0$i<=$maxIndex$i++{
  148.             imageline($this->source,$belso_kor['X'][$i],$belso_kor['Y'][$i],$kulso_kor['X'][$i],$kulso_kor['Y'][$i],$color);
  149.             if ($i >0{
  150.                 imageline($this->source,$belso_kor['X'][$i],$belso_kor['Y'][$i],$kulso_kor['X'][$i-1],$kulso_kor['Y'][$i-1],$color);
  151.             }
  152.         }
  153.         imageline($this->source,$belso_kor['X'][0],$belso_kor['Y'][0],$kulso_kor['X'][$maxIndex],$kulso_kor['Y'][$maxIndex],$color);
  154.         //Szín kitöltés
  155.         imagefill($this->source,ceil($this->width / 2),ceil($this->height / 2),$this->color);        
  156.     }
  157. }
  158. ?>

Documentation generated on Tue, 09 Feb 2010 01:17:51 +0100 by phpDocumentor 1.4.1