現在の位置: ホーム> 最新記事一覧> Trigonometric関数を使用して、ImageOpenPolygon()の通常のポリゴン座標を生成して使用します

Trigonometric関数を使用して、ImageOpenPolygon()の通常のポリゴン座標を生成して使用します

M66 2025-05-29

PHPでは、五角形、六角形などなどの通常のポリゴンを描きたい場合は、**三角関数(sin and cos)を使用して、各頂点の座標を簡単に計算し、 Imageopenpolygon()関数を介して描画できます。

このチュートリアルでは、それを実装する方法を詳細に説明します。

1。準備

まず、PHP環境にGDグラフィックライブラリが有効になっていることを確認してください。 GDは、画像を描画するための基本ライブラリです。通常のPHPサーバーを使用している場合、通常はデフォルトで有効になります。

2。三角関数がどのように頂点を生成するかを理解します

三角関数は、角度を座標ポイントに変換できます。特定の中心点(CenterX、Centery)を参照として使用し、半径の半径を固定するとします。各頂点の角度を通過させることができます。

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

で:

  • $ iは現在のポイントのインデックスです(ポイント数)

  • $ sidesは側面の数です。たとえば、五角形は5です

  • pi() 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、...]です。

  • 最後にリソースイメージストロイ($画像)を破壊することを忘れないでください。そうしないと、メモリが漏れます。

5。その他のヒント

イメージをサーバーに保存する場合、たとえばhttps://m66.net/uploads/polygon.pngなど、これを行うことができます。

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

/path/to/uploads/ディレクトリが存在し、事前に権限を書き込むことを確認してください!