當前位置: 首頁> 最新文章列表> 如何使用三角函數生成規則多邊形坐標,並將其傳遞給PHP 中的imageopenpolygon() 函數?

如何使用三角函數生成規則多邊形坐標,並將其傳遞給PHP 中的imageopenpolygon() 函數?

M66 2025-05-29

在PHP 中,如果想繪製一個規則的多邊形,比如五邊形、六邊形或更多邊形,我們可以利用**三角函數(sin和cos)**輕鬆計算每個頂點的坐標,並通過imageopenpolygon()函數來繪製出來。

本教程將詳細講解如何實現。

1. 準備工作

首先,確保你的PHP 環境已經啟用了GD 圖形庫。 GD 是繪製圖像的基礎庫。如果你使用的是常規PHP 服務器,通常默認已啟用。

2. 了解三角函數如何生成頂點

三角函數可以將角度轉為坐標點。假設我們以某個中心點(centerX, centerY)為基準,固定半徑radius ,每個頂點的角度可以通過:

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

其中:

  • $i是當前點的索引(第幾個點)

  • $sides是邊數,比如五邊形就是5

  • pi()返回圓周率π, 就是一個完整的圓(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, ...]

  • 不要忘記最後銷毀資源imagedestroy($image) ,否則會內存洩漏。

5. 其他提示

如果你想保存圖像到服務器,比如保存到https://m66.net/uploads/polygon.png ,可以這樣:

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

記得提前確保/path/to/uploads/目錄存在並且有寫入權限!