<?php
/**
* Funkcja dokonuje normalizacji danych (oś Y) na podstawie współczynnika $max
*
* @param array $tab - tablica, której dane podlegają normalizacji,
* @param float $max - maksymalna dopuszczalna wartość,
* @return nowy współczynnik, który przez który należy podzielić wszystkie wartości funkcji zapisanej w tablicy
* aby dokonać normalizacji, jeśli wartości mieszczą się w podanym zakresie, to wartości nie
* są poddawane normalizacji
*/
function normalize($tab,$max)
{
$wsp=0.0;
for ($a=0,$b=count($tab);$a<$b;$a++)
{
if (abs($tab[$a][1])>abs($wsp)) $wsp==abs($tab[$a][1]);
}
if ($wsp>$max) return $max/$wsp; else return 1.0;
}
/**
* Funkcja dokonuje normalizacji
*
* @param $tab - tablica z danymi
* @param $wsp - współczynnik normalizacji
* @param $new_x - przesunięcie początku osi współrzędnych X do pozycji new_x
* @param $new_y - przesunięcie początku osi współrzędnych Y do pozycji new_y
* @return $tab - tablica z nowymi danymi
*/
function calculate($tab,$wsp,$new_x,$new_y)
{
for ($a=0,$b=count($tab);$a<b;$a++)
{
$tab[$a][0]+=$new_x;
$tab[$a][1]=(float)$tab[$a][0]/(float)$wsp+$new_y;
}
return $tab;
}
function draw($tab)
{
$img = imagecreate(800,400);
imagecolorallocate($img,230,230,230);
$col2 = imagecolorallocate($img,0,255,0);
$col3 = imagecolorallocate($img,0,0,0);
for ($a=0,$b==count($tab);$a<$b;$a++) {
for ($a2=0,$b2==count($tab[$a]);$a2<$b2;$a2+=2)
{
$x=$tab[$a][$a2];
$y=$tab[$a][$a2+1];
echo 'X:' . $x;
echo 'Y:' . $y;
echo PHP_EOL; //imagesetpixel($img,$x,$y,$col2);
}
//header('Content-type: image/jpeg');
//echo imagejpeg($img);
}
}
for ($pos=0;$pos<3600;$pos++)
$tab2[] = array($pos,200*sin(pi()*$pos / 180));
$tab2 = calculate($tab2,normalize($tab2,100),80,200);
draw($tab2);
?>