学用PHP+GD画五角星
前两天和朋友们出去玩,饮酒过度,躺在旅馆里很是狼狈,朋友和我一起聊天,说起了画五角星的事情,回来试了一下,发现自己中学的几何居然忘得快一干二净了,原来自己丢人的事不只是喝得高了又高...
我的基本想法是这样滴,取一个以r为半径的圆的内接正五边形的五个顶点的坐标,然后把相隔的点连接起来就成。虽然写出这个很幼稚,但不会就得学啊,这样俺才能从不知道变成知道...
Example:
http://www.vetcafe.net/vtt/fivestar.php
Code:
<?php
class FiveStar
{
var $p = array();
function FiveStar($a, $b, $r, $d)
{
for ($i=0; $i < 5; $i++)
{
$this->p[$i]['x'] = $r * cos(2*pi()/5*$i - deg2rad($d)) + $a;
$this->p[$i]['y'] = $r * sin(2*pi()/5*$i - deg2rad($d)) + $b;
}
}function draw($image, $color)
{
imageline($image, $this->p[0]['x'], $this->p[0]['y'], $this->p[2]['x'], $this->p[2]['y'], $color);
imageline($image, $this->p[1]['x'], $this->p[1]['y'], $this->p[3]['x'], $this->p[3]['y'], $color);
imageline($image, $this->p[2]['x'], $this->p[2]['y'], $this->p[4]['x'], $this->p[4]['y'], $color);
imageline($image, $this->p[3]['x'], $this->p[3]['y'], $this->p[0]['x'], $this->p[0]['y'], $color);
imageline($image, $this->p[4]['x'], $this->p[4]['y'], $this->p[1]['x'], $this->p[1]['y'], $color);
}
}
$image = imagecreatetruecolor(2000, 2000);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
for ($i=0; $i < 10; $i++)
{
$star[$i] = new FiveStar(1000, 1000, 1000 * pow(0.382, $i), 18 + 36 * $i);
$star[$i]->draw($image, $black);
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
评论:
还是很厉害哦,佩服的说!
好久没聊了,呵呵……
Posted by: 初生牛犊 | 2007年07月24日 夜间01时58分