ずっとエラーが出ていて、悩みました。
$rという変数を半径にしていたのですが、
$rはredの値を格納する変数にもしていたので、
バッティングしていたのに気づけませんでした。。
ともあれ、とりあえず完成です。
でも、filledellipseで360個の円をHSVの値を変えて表現しているので、
赤い円が最後にオレンジを食ってます。
これを、弧で実現すればたぶん行けると思うんですが、とりあえず今日は終了。
<?php
$img = imagecreatetruecolor(400, 400);
$bg=imagecolorallocate($img,0,0,0);
$r2=150;
$s=1;$v=1;
function toH($a){
$result=round((round($a,3)*255));
return $result;
}
for($h=0;$h<360;$h++){
$y0=$r2*(sin(deg2rad($h)));
$x0=$r2*(cos(deg2rad($h)));
$y=$y0+200;
$x=$x0+200;
$hi = ( $h / 60 ) % 6;
$f = ( $h / 60 ) - $hi;
$p = $v * ( 1 - $s );
$q = $v * ( 1 - $f * $s );
$t = $v * ( 1 - ( 1 - $f ) * $s );
if($hi == 0){$r = $v;$g = $t;$b = $p;}
elseif($hi == 1){$r = $q;$g = $v;$b = $p;}
elseif($hi == 2){$r = $p;$g = $v;$b = $t;}
elseif($hi == 3){$r = $p;$g = $q;$b = $v;}
elseif($hi == 4){$r = $t;$g = $p;$b = $v;}
elseif($hi == 5){$r = $v;$g = $p;$b = $q;}
//else{$r = $v;$g = $v;$b = $v;}
$col=imagecolorallocate($img,toH($r),toH($g),toH($b));
imagefilledellipse($img, $x, $y, 50, 50, $col);
}
header("Content-Type: image/png");
imagepng($img);
?>

0 件のコメント:
コメントを投稿