/**
* @param resource &$image Image resource
* @param integer $num Number of angles
* @param integer $rad Radius of described circle
* @param integer $ax Center on X
* @param integer $ay Center on Y
* @param integer $color Color
* @param integer $rot Rotation angle
* @return bool
*/
function imagepolystar(&$img, $num, $rad, $cx, $cy, $color, $rot = 0) {
if (!is_int($num) || $num < 3 || !is_int($rad) || !is_int($cx) || !is_int($cy) || !is_int($rot)) {
trigger_error(__FUNCTION__ . '(): Bad arguments.', E_USER_WARNING);
return false;
}
$step = 360 / $num;
$a = array(); // Coordinates
for ($i = 0; $i < 360; $i += $step) {
$angle = $i + $rot;
$angle = deg2rad($angle);
$a[] = cos($angle) * $rad + $cx; // Coordinate on X
$a[] = sin($angle) * $rad + $cy; // Coordinate on Y
}
return imagepolygon($img, $a, $num, $color);
}
Пример:
// Рисуем правильный семиугольник
// Центр лежит на координатах (75; 75)
// Радиус описанной окружности 50 (вершины многоугольника лежат на окружности; отрицательные размеры также допустимы)
// Поворачиваем на 45 градусов против часовой стрелки (отрицательный угол - для вращения по часовой стрелке)
$img = imagecreatetruecolor(150, 150);
imagepolystar($img, 7, 50, 75, 75, 0x00ff00, 45);
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);