私は取得パラメータとして角度を取り、その角度で円のセグメントを出力するこのphpプログラムを持っています:
<?php
$size = 600;
$img = imagecreatetruecolor($size, $size);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefilledrectangle($img,0,0,$size,$size,$white);
function Vector($palette,$startx,$starty,$angle,$length,$colour){
$angle = deg2rad($angle);
$endx = $startx+cos($angle)*$length;
$endy = $starty-sin($angle)*$length;
return(imageline($palette,$startx,$starty,$endx,$endy,$colour));
}
$ang = 0;
while($ang <= $_GET['angle']){
Vector($img,$size/2,$size/2,$ang,200,$black);
$ang += 1;
}
header("Content-type: image/png");
imagepng($img);
?>
関数ベクトルは基本的に、指定されたパラメーターで線を描画します。したがって、何度もループし、ループするたびに角度を1ずつ増やします。次に、基本的に指定された角度で一種の円セグメントを描画するベクトル関数を呼び出します。
しかし、前の円の終点から始まる円の別のセクターを描画したい場合、それは重なります! ちなみにコードはこんな感じ。
<?php
$size = 600;
$img = imagecreatetruecolor($size, $size);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$blue = imagecolorallocate($img, 0, 0, 255);
imagefilledrectangle($img,0,0,$size,$size,$white);
function Vector($palette,$startx,$starty,$angle,$length,$colour){
$angle = deg2rad($angle);
$endx = $startx+cos($angle)*$length;
$endy = $starty-sin($angle)*$length;
return(imageline($palette,$startx,$starty,$endx,$endy,$colour));
}
$int = 0;
while($int <= $_GET['angle']){
Vector($img,$size/2,$size/2,$int,200,$black);
$int += 0.01;
}
$int = 0;
while($int <= $_GET['angle']){
Vector($img,$size/2,$size/2,$int,200,$blue);
$int += 0.01;
}
header("Content-type: image/png");
imagepng($img);
?>
上記のコードでは、ある角度で円セクターを描画し、同じ角度で青色の別のセクターを描画することを期待しています。
最初のセクターが終了したところから 2 番目のセクターを開始したいのですが、重複していますか?
では、前のものが停止した場所から開始するにはどうすればよいですか?