:mad:Подскажите пожалуйста, почему код рисует только одну линию и не хочет выводить всю фигуру?
Код:
<?php //класс точки class Point{ public $x; public $y; public $picture; //метод для прорисовки точки. public function ShowPoint(){ $r=rand(0,255); //случайным образом находим цвет точки $g=rand(0,255); $b=rand(0,255); $col=imagecolorallocate($this->picture,$r,$g,$b); imagesetpixel($this->picture,$this->x,$this->y,$col); } } //класс линии class Line extends Point { public $x1; //координаты начала и конца линии public $x2; public $y1; public $y2; // выщитываем по у координаты точек для линии и отправляем их на прорисовку public function ShowLineY(){ if($this->y1>$this->y2){ for($temp_y=$this->y2;$temp_y<$this->y1;$temp_y++){ $this->y=$temp_y; $this->x=((($temp_y-$this->y1)*($this->x2-$this->x1))/($this->y2-$this->y1))+$this->x1; $this->ShowPoint(); } } else{ for($temp_y=$this->y1;$temp_y<$this->y2;$temp_y++){ $this->y=$temp_y; $this->x=((($temp_y-$this->y1)*($this->x2-$this->x1))/($this->y2-$this->y1))+$this->x1; $this->ShowPoint(); } } } // выщитываем по х координаты точек для линии и отправляем их на прорисовку public function ShowLineX(){ if($this->x1>$this->x2){ for($temp_x=$this->x2;$temp_x<$this->x1;$temp_x++){ $this->x=$temp_x; $this->y=((($temp_x-$this->x1)*($this->y2-$this->y1))/($this->x2-$this->x1))+$this->y1; $this->ShowPoint(); } } else{ for($temp_x=$this->x1;$temp_x<$this->x2;$temp_x++){ $this->x=$temp_x; $this->y=((($temp_x-$this->x1)*($this->y2-$this->y1))/($this->x2-$this->x1))+$this->y1; $this->ShowPoint(); } } } public function directionLine(){ //определяем по чем (y или x)лучше выщитывать вторую координату точки $difference_x=$this->x1-$this->x2; if($difference_x<0) $difference_x*=-1; $difference_y=$this->y1-$this->y2; if($difference_y<0) $difference_y*=-1; //ид?м в нужную функцию для прорисовки точки if($difference_x<$difference_y) $this->ShowLineY(); else $this->ShowLineX(); } } class Figura extends Line { public $size; //количество вершин в фигуре public $corner_x; //массив координат х-ов public $corner_y; //массив координат у-ов
function __construct($s,$c_x,$c_y){ $this->size=$s; $this->corner_x=$c_x; $this->corner_y=$c_y; } public function ShowFigura(){ //выбираем из массивов координат начало и конец линии for($i=0;$i<$this->size;$i++){ if($i+1==$this->size){ $this->x1=$this->corner_x[$i]; $this->y1=$this->corner_y[$i]; $this->x2=$this->corner_x[0]; $this->y2=$this->corner_y[0]; } else{ $this->x1=$this->corner_x[$i]; $this->y1=$this->corner_y[$i]; $this->x2=$this->corner_x[$i+1]; $this->y2=$this->corner_y[$i+1]; } $this->directionLine(); } } } // для тестов координаты треугольника $corner=3; $mas_x=array(10,300,10); $mas_y=array(30,200,200); //инициализация объекта класса $fig=new Figura($corner,$mas_x,$mas_y); $fig->picture=imagecreate(400,400); $bg_col = imagecolorallocate($fig->picture,255,255,255);
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
malanka
:mad:Подскажите пожалуйста, почему код рисует только одну линию и не хочет выводить всю фигуру?
Код:
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.