ずっとエラーが出ていて、悩みました。
$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 件のコメント:
コメントを投稿