ФорумПрограммированиеПыхнуть хотите?Готовые решения → Рисование правильных многоугольников

Рисование правильных многоугольников

  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 27 декабря 2008 г. 15:40

    /**
    * @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);

  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 27 декабря 2008 г. 15:49, спустя 9 минут 13 секунд

    результат работы приаттач
  • DonDiego

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 22:19, спустя 1330 дней 5 часов 29 минут

    Два чумазых тракториста
    Пашут поле на К-300.
    Хуй теперь их разберет
    Кто сейчас меня ебет.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!