PHP에서 GD 라이브러리를 사용하여 그래픽을 그리면 ImageOpenPolygon () 함수를 사용하여 열린 다각형 (즉, 끝에 연결되지 않은 폴리 라인)을 그릴 수 있습니다. 기본적으로 ImageOpenPolygon ()은 제공 한 도트 세트에 따라 직접 그려집니다. 다각형의 도면 방향을 특정 각도로 회전하는 것과 같은 다각형의 드로잉 방향을 조정하려면 좌표 지점을 회전시켜야합니다.
이 기사에서는 PHP에서 ImageOpenPolygon () 에 의해 그린 그래프에 회전 변환을 적용하는 방법을 자세히 설명합니다.
2 차원 평면에서, 원점 주위의 각도 θ를 회전시킨 후 (0, 0) , 새로운 좌표 (x ', y') 에 대한 계산 공식은 다음과 같습니다.
x' = x * cos(θ) - y * sin(θ)
y' = x * sin(θ) + y * cos(θ)
모든 지점 (CX, CY) 주위를 회전하려면 먼저 좌표를 원점으로 번역 한 다음 다시 번역해야합니다.
x' = cos(θ) * (x - cx) - sin(θ) * (y - cy) + cx
y' = sin(θ) * (x - cx) + cos(θ) * (y - cy) + cy
위의 공식에 따라 포인트 세트를 회전시키기 위해 작은 기능을 작성할 수 있습니다. 다음은 이미지를 만들고 회전 다각형을 그리며 결과를 출력하는 방법에 대한 완전한 예입니다.
<?php
// 회전 함수를 정의하십시오
function rotatePoints(array $points, float $angleDegrees, float $centerX = 0, float $centerY = 0): array {
$angleRadians = deg2rad($angleDegrees);
$cosTheta = cos($angleRadians);
$sinTheta = sin($angleRadians);
$rotatedPoints = [];
for ($i = 0; $i < count($points); $i += 2) {
$x = $points[$i];
$y = $points[$i + 1];
$xRotated = $cosTheta * ($x - $centerX) - $sinTheta * ($y - $centerY) + $centerX;
$yRotated = $sinTheta * ($x - $centerX) + $cosTheta * ($y - $centerY) + $centerY;
$rotatedPoints[] = $xRotated;
$rotatedPoints[] = $yRotated;
}
return $rotatedPoints;
}
// 캔버스를 만듭니다
$width = 400;
$height = 400;
$image = imagecreatetruecolor($width, $height);
// 색상을 할당합니다
$backgroundColor = imagecolorallocate($image, 255, 255, 255);
$lineColor = imagecolorallocate($image, 0, 0, 0);
// 배경을 채우십시오
imagefill($image, 0, 0, $backgroundColor);
// 원래 포인트 세트를 정의합니다(간단한 삼각형)
$points = [
200, 100, // 가리키다1
300, 300, // 가리키다2
100, 300 // 가리키다3
];
// 회전 각도를 설정하십시오
$angle = 45; // 시계 방향으로 회전합니다45도
// 计算회전后的가리키다集
$rotatedPoints = rotatePoints($points, $angle, 200, 200); // 센터 주변(200,200)회전
// 绘制회전后的开放多边形
imageopenpolygon($image, $rotatedPoints, count($rotatedPoints) / 2, $lineColor);
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/png');
imagepng($image);
// 자원을 파괴하십시오
imagedestroy($image);
?>
ImageOpenPolygon ()은 포인트 배열이 순서 [x1, y1, x2, y2, ..., xn, yn] 의 1 차원 배열이어야합니다.
회전 할 때 그림의 중심을 회전 센터로 사용하여 그림이 캔버스의 중심에서 벗어나지 않도록하는 것이 가장 좋습니다.
PHP의 내장 된 Trigonometric 함수는 라디안의 단위에 있으므로 deg2rad ()는 각도를 라디안으로 변환하는 데 사용됩니다.
간단한 회전 변환 처리를 통해 ImageOpenPolygon () 에 의해 그려진 그림을 모든 각도로 회전시킬 수 있습니다. PHP 이미지 처리 팁에 대해 자세히 알아 보려면 자세한 자습서를 참조하십시오.
이 기사가 PHP의 ImageOpenPolygon () 과 회전 변환의 조합을 더 잘 이해하는 데 도움이되기를 바랍니다.