현재 위치: > 최신 기사 목록> Trigonometric 함수를 사용하여 사용될 ImageOpenPolygon ()에 대한 정기적 인 다각형 좌표를 생성하십시오.

Trigonometric 함수를 사용하여 사용될 ImageOpenPolygon ()에 대한 정기적 인 다각형 좌표를 생성하십시오.

M66 2025-05-29

PHP에서는 국방부, 육각형 이상과 같은 일반 다각형을 그리려면 ** Trigonometric 함수 (sin and cos)를 사용하여 각 정점의 좌표를 쉽게 계산하고 ImageOpenPolygon () 함수를 통해이를 그릴 수 있습니다.

이 튜토리얼은이를 구현하는 방법을 자세히 설명합니다.

1. 준비

먼저 PHP 환경에 GD 그래픽 라이브러리가 활성화되어 있는지 확인하십시오. GD는 이미지를 그리는 기본 라이브러리입니다. 일반 PHP 서버를 사용하는 경우 일반적으로 기본적으로 활성화됩니다.

2. 삼각 함수가 정점을 생성하는 방법을 이해하십시오

삼각 함수는 각도를 좌표 지점으로 변환 할 수 있습니다. 우리가 특정 중심 지점 (Centrex, Centery) 을 기준으로 사용하고 반경 반경을 고정하면 각 정점의 각도를 전달할 수 있습니다.

 $angle = 2 * pi() * $i / $sides;

안에:

  • $ i 는 현재 지점의 인덱스입니다 (포인트 수)

  • $ 측면은 측면 수입니다. 예를 들어, 국방부는 5입니다.

  • pi ()는 pi π를 반환하고, 2π는 완전한 원입니다 (360도)

그런 다음 사용하십시오 :

 $x = $centerX + $radius * cos($angle);
$y = $centerY + $radius * sin($angle);

각 정점의 위치를 ​​계산하십시오.

3. PHP 샘플 코드를 완료하십시오

다음은 일반적인 육각형 (6면)을 생성하여 그림에 그려서 실질적인 예입니다.

 <?php
// 캔버스를 만듭니다
$image = imagecreatetruecolor(400, 400);

// 색상을 할당합니다
$background = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$polygonColor = imagecolorallocate($image, 0, 0, 255);  // 파란색 다각형

// 배경을 채우십시오
imagefill($image, 0, 0, $background);

// 다각형 매개 변수
$sides = 6; // 가장자리 수
$centerX = 200; // 센터X
$centerY = 200; // 센터Y
$radius = 100; // 반지름

// 정점을 생성하십시오
$points = [];
for ($i = 0; $i < $sides; $i++) {
    $angle = 2 * pi() * $i / $sides - pi() / 2; // 위로 시작합니다,그래서 빼기90도
    $x = $centerX + $radius * cos($angle);
    $y = $centerY + $radius * sin($angle);
    $points[] = $x;
    $points[] = $y;
}

// 열린 다각형을 그립니다(자동으로 닫히지 않습니다)
imageopenpolygon($image, $points, $sides, $polygonColor);

// 브라우저에 사진을 출력합니다
header('Content-Type: image/png');
imagepng($image);

// 자원을 파괴하십시오
imagedestroy($image);
?>

4. 주목할만한 것들

  • ImageOpenPolygon () 은 열린 다각형이며 시작 및 종말점은 자동으로 연결되지 않습니다. 그래픽을 닫으려면 imagePolygon ()을 대신 사용하십시오.

  • 좌표 배열은 순서대로 배열되고 형식은 [x0, y0, x1, y1, x2, y2, ...] 입니다.

  • 마지막에 자원 ImageStroy ($ image)를 파괴하는 것을 잊지 마십시오. 그렇지 않으면 메모리가 누출됩니다.

5. 다른 팁

예를 들어 https://m66.net/uploads/polygon.png 와 같은 이미지를 서버에 저장하려면 다음을 수행 할 수 있습니다.

 imagepng($image, '/path/to/uploads/polygon.png');

/path/to/uploads/ directory가 존재하고 사전에 쓰기 권한이 있는지 확인하십시오!