# imagepolygon

(PHP 4, PHP 5, PHP 7)

imagepolygonDraws a polygon

### 설명

bool imagepolygon ( resource `\$image` , array `\$points` , int `\$num_points` , int `\$color` )

imagepolygon() creates a polygon in the given `image`.

### 인수

``` image```

imagecreatetruecolor() 등의 이미지 생성 함수에서 반환한 이미지 자원.

`points`

An array containing the polygon's vertices, e.g.:

 points[0] = x0 points[1] = y0 points[2] = x1 points[3] = y1

`num_points`

Total number of points (vertices).

`color`

A color identifier created with imagecolorallocate().

### 반환값

성공 시 `TRUE`를, 실패 시 `FALSE`를 반환합니다.

### 예제

Example #1 imagepolygon() example

``` <?php// Create a blank image\$image = imagecreatetruecolor(400, 300);// Allocate a color for the polygon\$col_poly = imagecolorallocate(\$image, 255, 255, 255);// Draw the polygonimagepolygon(\$image, array(        0,   0,        100, 200,        300, 200    ),    3,    \$col_poly);// Output the picture to the browserheader('Content-type: image/png');imagepng(\$image);imagedestroy(\$image);?> ```

위 예제의 출력 예시:

### User Contributed Notes 4 notes

tatlar at yahoo dot com
16 years ago
``` Function to get 5-sided polygon (pentagon) or star (pentagram) co-ords. <?phpfunction _makeFiveSidedStar( \$x, \$y, \$radius, \$shape='polygon', \$spiky=NULL ) {    \$point = array() ; // new array                                                                                                                       \$angle = 360 / 5 ;                                                                                                                        \$point[0]['x'] = \$x ;                                                                                                                     \$point[0]['y'] = \$y - \$radius ;                                                                                                           \$point[2]['x'] = \$x + ( \$radius * cos( deg2rad( 90 - \$angle ) ) ) ;     \$point[2]['y'] = \$y - ( \$radius * sin( deg2rad( 90 - \$angle ) ) ) ;    \$point[4]['x'] = \$x + ( \$radius * sin( deg2rad( 180 - ( \$angle*2 ) ) ) ) ;    \$point[4]['y'] = \$y + ( \$radius * cos( deg2rad( 180 - ( \$angle*2 ) ) ) ) ;    \$point[6]['x'] = \$x - ( \$radius * sin( deg2rad( 180 - ( \$angle*2 ) ) ) ) ;                                                                \$point[6]['y'] = \$y + ( \$radius * cos( deg2rad( 180 - ( \$angle*2 ) ) ) ) ;    \$point[8]['x'] = \$x - ( \$radius * cos( deg2rad( 90 - \$angle ) ) ) ;                                                                       \$point[8]['y'] = \$y - ( \$radius * sin( deg2rad( 90 - \$angle ) ) ) ;    if( \$shape == 'star' ) {        if( \$spiky == NULL ) \$spiky = 0.5 ;  // degree of spikiness, default to 0.5        \$indent = \$radius * \$spiky ;        \$point[1]['x'] = \$x + ( \$indent * cos( deg2rad( 90 - \$angle/2 ) ) ) ;                                                                     \$point[1]['y'] = \$y - ( \$indent * sin( deg2rad( 90 - \$angle/2 ) ) ) ;                                                             \$point[3]['x'] = \$x + ( \$indent * sin( deg2rad( 180 - \$angle ) ) ) ;                                                                      \$point[3]['y'] = \$y - ( \$indent * cos( deg2rad( 180 - \$angle ) ) ) ;        \$point[5]['x'] = \$x ;                                                                                                                     \$point[5]['y'] = \$y + ( \$indent * sin( deg2rad( 180 - \$angle ) ) ) ;        \$point[7]['x'] = \$x - ( \$indent * sin( deg2rad( 180 - \$angle ) ) ) ;                                                                      \$point[7]['y'] = \$y - ( \$indent * cos( deg2rad( 180 - \$angle ) ) ) ;                                                                      \$point[9]['x'] = \$x - ( \$indent * cos( deg2rad( 90 - \$angle/2 ) ) ) ;                                                                     \$point[9]['y'] = \$y - ( \$indent * sin( deg2rad( 90 - \$angle/2 ) ) ) ;    }    ksort( \$point ) ;    \$coords = array() ;  // new array                                                                                                                     foreach( \$point as \$pKey=>\$pVal ) {                                                                                                           if( is_array( \$pVal ) ) {                                                                                                                     foreach( \$pVal as \$pSubKey=>\$pSubVal ) {                                                                                                      if( !empty( \$pSubVal ) ) array_push( \$coords, \$pSubVal ) ;                                                                            }                                                                                                                                     }                                                                                                                                     }    return \$coords ;}\$values = _makeFiveSidedStar( 100, 100, 50, 'star' ) ;?> ```
licson0729 at gmail dot com
11 years ago
``` Function to draw a n-sided regular polygon<?php\$img = imagecreatetruecolor(1360,768);function regularPolygon(\$img,\$x,\$y,\$radius,\$sides,\$color){    \$points = array();    for(\$a = 0;\$a <= 360; \$a += 360/\$sides)    {        \$points[] = \$x + \$radius * cos(deg2rad(\$a));        \$points[] = \$y + \$radius * sin(deg2rad(\$a));    }    return imagepolygon(\$img,\$points,\$sides,\$color);}regularPolygon(\$img,1360/2,768/2,300,8,0xffffff);//Test drawheader('Content-type: image/png');imagepng(\$img);imagedestroy(\$img);?> ```
jsnell at networkninja dot com
22 years ago
``` Here are some handy routines for rotation and translation of polygons.  Scaling could be added easily as well. <?php function translate_point(&\$x,&\$y,\$angle,\$about_x,\$about_y,\$shift_x,\$shift_y) {     \$x -= \$about_x;     \$y -= \$about_y;     \$angle = (\$angle / 180) * M_PI; /* math: [x2,y2] = [x,  *  [[cos(a),-sin(a)],            y]      [sin(a),cos(a)]] ==> x = x * cos(a) + y*sin(a) y = x*-sin(a) + y*cos(a) */     \$new_x = \$x * cos(\$angle) - \$y * sin(\$angle);     \$new_y = \$x * sin(\$angle) + \$y * cos(\$angle);     \$x = \$new_x+ \$about_x + \$shift_x ;     \$y = \$new_y + \$about_y + \$shift_y; } function translate_poly(\$point_array, \$angle, \$about_x, \$about_y,\$shift_x,\$shift_y) {     \$translated_poly = Array();     while(count(\$point_array) > 1)     {         \$temp_x = array_shift(\$point_array);         \$temp_y = array_shift(\$point_array);         translate_point(\$temp_x, \$temp_y, \$angle, \$about_x, \$about_y,\$shift_x, \$shift_y);         array_push(\$translated_poly, \$temp_x);         array_push(\$translated_poly, \$temp_y);     }     return \$translated_poly; } ?> ```
-4
licson0729 at gmail dot com
11 years ago
``` Here's a function to draw a n-sided star:<?phpfunction drawStar(\$img,\$x,\$y,\$radius,\$sides,\$color,\$spikness=0.5){    \$point =array();    \$t = 0;    for(\$a = 0;\$a <= 360;\$a += 360/(\$sides*2))    {        \$t++;        if(\$t % 2 == 0)        {            \$point[] = \$x + (\$radius * \$spikness) * cos(deg2rad(\$a));            \$point[] = \$y + (\$radius * \$spikness) * sin(deg2rad(\$a));        }else{            \$point[] = \$x + \$radius * cos(deg2rad(\$a));            \$point[] = \$y + \$radius * sin(deg2rad(\$a));        }    }    return imagepolygon(\$img,\$point,\$sides*2,\$color);}?> ```