現在の位置: ホーム> 最新記事一覧> 任意のエッジでポリゴンを描くために、座標配列を動的に生成します

任意のエッジでポリゴンを描くために、座標配列を動的に生成します

M66 2025-05-29

画像処理の分野では、PHPのGDライブラリを使用してグラフィックを描画することは一般的なスキルです。その中で、 ImageOpenPolygon関数(正しい関数名はImagePolygonである必要があります)を使用して、任意の数のエッジのポリゴンを描画できます。この記事では、座標配列を動的に生成し、それらを使用して通常のNサイドを描く方法を詳細に紹介します。

1。ImagePolygonとは何ですか?

ImagePolygon()は、ポリゴンを描くためにPHP GDライブラリで使用される関数です。
その基本的な使用法は次のとおりです。

 bool imagepolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
)
  • $画像は画像リソースです。

  • $ポイントは、 [x1、y1、x2、y2、...、xn、ynなどの形式であるポイント配列です。

  • $ num_pointsはポイントの数です(配列要素の数ではなく、2で割っています)。

  • $色は描かれた色です。

2。座標配列を動的に生成する方法は?

任意の数のエッジ(五角形、オクタゴンなど)のポリゴンを描くために、単純な三角関数を使用して座標を生成できます。アイデアは次のとおりです。

  • ポリゴンの中心点(CX、CY)を設定します。

  • 半径r (つまり、中心から頂点までの距離)を設定します。

  • 各頂点を360°で均等に分配します。

  • 各頂点の座標は、Sine( Sin )とCosine( cos )によって計算できます。

式は次のとおりです。

 x = cx + r * cos(角度)
y = cy + r * sin(角度)

php cos()sin()によって受信された角度はラジアンであり、 deg2rad()を使用して変換する必要があることに注意してください。

3。PHPの例を完了します

ここに、座標を動的に生成し、任意の数のエッジのポリゴンを描画する方法を示す完全な例を示します。

 <?php
// 画像サイズを設定します
$width = 400;
$height = 400;

// キャンバスを作成します
$image = imagecreatetruecolor($width, $height);

// 色を割り当てます
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

// 背景を埋めます
imagefill($image, 0, 0, $white);

// ポリゴンパラメーター
$number_of_sides = 7; // 例えば,ヘプタゴンを描きます
$radius = 150; // 半径
$centerX = $width / 2;
$centerY = $height / 2;

// 座標ポイントを生成します
$points = [];
for ($i = 0; $i < $number_of_sides; $i++) {
    $angle_deg = (360 / $number_of_sides) * $i - 90; // 上から絵を描き始めます
    $angle_rad = deg2rad($angle_deg);
    $x = $centerX + $radius * cos($angle_rad);
    $y = $centerY + $radius * sin($angle_rad);
    $points[] = (int)$x;
    $points[] = (int)$y;
}

// ポリゴンを描きます
imagepolygon($image, $points, $number_of_sides, $black);

// ブラウザに写真を出力します
header('Content-Type: image/png');
imagepng($image);

// リソースを破壊します
imagedestroy($image);
?>

上記のコードをPHPファイル( polygon.phpなど)として保存し、ブラウザからアクセスするには、通常の七角形を見ることができます。

IV。例の説明

  • $ number_of_sides変数を調整することにより、さまざまな数の側面でポリゴンを描画できます。

  • $半径は、ポリゴンのサイズを決定します。

  • 角度のオフセット(ここに-90度です)により、上部に最初の頂点がなり、効果がより美しくなります。

  • 画像をサーバーに保存する必要がある場合は、 ImagePng($ image、 'path/to/file.png')を使用できます。

たとえば、画像をm66.net/uploads/polygon.pngに保存します。

 imagepng($image, '/var/www/m66.net/uploads/polygon.png');

Save Directoryに書き込み許可があることを確認するように注意してください!

5。概要

単純な三角操作と組み合わせたPHPのImage -Polygon関数を使用すると、任意の数のエッジの通常のポリゴンを簡単に描画できます。これは、グラフィックジェネレーター、検証コード、チャートコンポーネントを作成する場合に非常に役立ちます。将来的には、色が塗りつぶされたポリゴンを描きたい場合は、 ImageFilledPolygon()関数を組み合わせて実装することもできます。