렌더링:
소스 코드:
[code]
// ------------------ - -----
//|pie3dfun.PHP//공용 함수
// -------------
define("ANGLE_STEP", 5); //타원호를 그릴 때 각도 단계 정의
function draw_getdarkcolor($img,$clr) //$clr에 해당하는 어두운 색상 찾기
{
$ rgb = imagecolorsforindex($img,$clr);
return array($rgb["red"]/2,$rgb["green"]/2,$rgb["blue"]/2) ;
}
function draw_getexy($a, $b, $d) //각도에 해당하는 타원의 점 좌표를 찾습니다.
{
$d = deg2rad($d);
return array(round($a*Cos($d)), round($b*Sin($d)))
}
function draw_arc($img,$ox,$oy, $a,$ b,$sd,$ed,$clr) //타원호 함수
{
$n = ceil(($ed-$sd)/ANGLE_STEP)
$d = $ sd;
list($x0,$y0) = draw_getexy($a,$b,$d)
for($i=0; $i<$n; $i )
{
$d = ($d ANGLE_STEP)>$ed?$ed:($d ANGLE_STEP)
list($x, $y) = draw_getexy($a, $b, $d); >imageline($ img, $x0 $ox, $y0 $oy, $x $ox, $y $oy, $clr)
$x0 = $x; >}
}
function draw_sector($img, $ox, $oy, $a, $b, $sd, $ed, $clr) //섹터 그리기
{
$n = ceil(($ed-$sd)/ANGLE_STEP);
$d = $sd;
list($x0,$y0) = draw_getexy($a, $b, $d); imageline($img, $x0 $ox, $y0 $oy, $ox, $oy, $clr)
for($i=0; $i<$n; $i )
{
$d = ( $d ANGLE_STEP)>$ed?$ed:($d ANGLE_STEP)
list($x, $y) = draw_getexy($a, $b, $d); imageline($img, $x0 $ox, $y0 $oy, $x $ox, $y $oy, $clr)
$x0 = $x; }
이미지라인($img, $x0 $ox, $y0 $oy, $ox, $oy, $clr)
list($x, $y) = draw_getexy($a/2, $b /2, ($ d $sd)/2)
imagefill($img, $x $ox, $y $oy, $clr)
}
function draw_sector3d($img, $ox , $oy, $ a, $b, $v, $sd, $ed, $clr) //3d 섹터
{
draw_sector($img, $ox, $oy, $a, $b, $sd, $ed , $clr)
if($sd<180)
{
list($R, $G, $B) = draw_getdarkcolor($img, $clr); >$clr=imagecolorallocate ($img, $R, $G, $B)
if($ed>180) $ed = 180;
list($sx, $sy) = draw_getexy($a ,$b,$sd);
$sx;
$sy = $oy;
list($ex, $ey) = draw_getexy($a, $b, $ed);
$ex = $ox;
$ey = $oy;
imageline($img, $sx, $sy, $sx, $sy $v, $clr); img, $ex, $ey, $ex, $ey $v, $clr)
draw_arc($img, $ox, $oy $v, $a, $b, $sd, $ed, $clr );
list($sx, $sy) = draw_getexy($a, $b, ($sd $ed)/2)
$sy = $oy $v/2; = $ox;
imagefill($img, $sx, $sy, $clr);
}
}
function draw_getindexcolor($img, $clr) //색상을 색인화하는 RBG
{
$R = ($clr>>16) & 0xff
$G = ($clr>>8)& 0xff;
$B = ($clr) & 0xff; 🎜>return imagecolorallocate( $img, $R, $G, $B);
}
// 메인 함수를 그리고 그림을 출력합니다
// $datLst는 데이터 배열이고, $datLst는 레이블 배열, $datLst는 색상 배열입니다
//위 세 배열의 크기는 동일해야 합니다
function draw_img($datLst,$labLst,$clrLst,$a=250,$b=120, $v=20,$f
{
$ox = 5 $a;
$oy = 5 $b
$fw = imagefontwidth($font)
$fh = imagefontheight ($font);
$n = count($datLst);//데이터 항목 수
$w = 10 $a*2
$h = 10 $b*2 $v ($ fh 2)*$n;
$img = imagecreate($w, $h)
//RGB를 인덱스 색상으로 변환
for($i=0; $i<$n; $i )
$clrLst[$i] = draw_getindexcolor($img,$clrLst[$i])
$clrbk = imagecolorallocate($img, 0xff, 0xff, 0xff)
$clrt = imagecolorallocate( $img, 0x00, 0x00, 0x00);
//배경색 채우기
imagefill($img, 0, 0, $clrbk)
//Sum
$tot = 0; 🎜>for($i=0; $ i<$n; $i )
$tot = $datLst[$i]
$sd = 0
$ed = 0; >$ly = 10 $b*2 $ v
for($i=0; $i<$n; $i )
{
$sd = $ed
$ed; $datLst[$i]/$tot* 360;
//둥근 케이크 그리기
draw_sector3d($img, $ox, $oy, $a, $b, $v, $sd, $ed, $clrLst[$i]); //$ sd,$ed,$clrLst[$i]);
//라벨 그리기
imagefilled직사각형($img, 5, $ly, 5 $fw, $ly $fh, $clrLst[$i]);
이미지직사각형($img, 5, $ly, 5 $fw, $ly $fh, $clrt)
//imagestring($img, $font, 5 2*$fw, $ly, $labLst [$i].":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100 )."%)", $clrt)
$str = iconv("GB2312", "UTF-8", $labLst[$i])
ImageTTFText($img, $font, 0, 5 2*$fw, $ly 13, $ clrt, "./simsun.ttf", $str.":".$datLst[$i]."(".(round(10000*($datLst[$i ]/$tot))/100)." %)");
$ly = $fh 2
}
//출력 그래픽
header("콘텐츠 유형: image/png ");
//생성된 이미지 출력
$imgFileName = "../temp/".time().".png";
imagepng($img,$imgFileName);
에코 '''''''''' '''''''''''''''''''''''''''''''''''' ''' '''''''''''
}
$datLst = array(30, 10, 20, 20, 10, 20, 10, 20); //data
$labLst = array("중국 과학 기술 대학", "안후이 대학 과학기술", "청화대학", "북경대학", "난징대학", "상하이대학", "호하이대학", "쑨원대학"); //Tag
$clrLst = array (0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99 , 0x99ffff, 0xff3333, 0x009999);
//Draw
draw_img($datLst,$labLst,$clrLst)
?>
위 내용은 디지털 신호 처리의 FPGA 구현을 포함하여 멋진 PHP 데이터 파이 차트 효과 구현 코드를 만들기 위한 디지털 신호 처리의 FPGA 구현을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.