Aktueller Standort: Startseite> Neueste Artikel> Generieren Sie das Koordinatenarray dynamisch, um Polygone mit willkürlichen Kanten zu zeichnen

Generieren Sie das Koordinatenarray dynamisch, um Polygone mit willkürlichen Kanten zu zeichnen

M66 2025-05-29

Im Bereich der Bildverarbeitung ist das Zeichnen von Grafiken mithilfe der GD -Bibliothek von PHP eine häufige Fähigkeit. Unter ihnen kann die ImageOpenPolygon -Funktion (der richtige Funktionsname sollte Bildpolygon sein) verwendet werden, um Polygone einer beliebigen Anzahl von Kanten zu zeichnen. In diesem Artikel wird ausführlich eingeführt, wie sie dynamisch Koordinaten-Arrays generieren und sie verwenden, um reguläre N-Seiten zu zeichnen.

1. Was ist ImagePolygon?

ImagePolygon () ist eine Funktion, die in der PHP -GD -Bibliothek zum Zeichnen von Polygonen verwendet wird.
Die grundlegende Nutzung ist wie folgt:

 bool imagepolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
)
  • $ image ist eine Bildressource;

  • $ points ist ein Punktarray, Format wie [x1, y1, x2, y2, ..., xn, yn] ;

  • $ num_points ist die Anzahl der Punkte (nicht die Anzahl der Array -Elemente, geteilt durch 2);

  • $ color ist die gezogene Farbe.

2. Wie erzeugt man dynamisch Koordinaten -Arrays?

Um Polygone einer beliebigen Anzahl von Kanten (wie Pentagonen, Octagons usw.) zu zeichnen, können wir eine einfache trigonometrische Funktion verwenden, um Koordinaten zu generieren. Die Idee ist wie folgt:

  • Stellen Sie den Mittelpunkt des Polygons (CX, Cy) ein;

  • Setzen Sie den Radius R (d. H. Der Abstand von der Mitte zum Scheitelpunkt);

  • Jeden Scheitelpunkt gleichmäßig bei 360 ° verteilen;

  • Die Koordinaten jedes Scheitelpunkts können durch Sinus ( Sin ) und Cosinus ( COS ) berechnet werden.

Die Formel lautet:

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

Beachten Sie, dass die von PHP cos () und sin () erhaltenen Winkel Radians sind und mit Deg2Rad () umgewandelt werden müssen.

3. Vollständiges PHP -Beispiel

Hier finden Sie ein vollständiges Beispiel, das zeigt, wie Sie Koordinaten dynamisch generieren und ein Polygon aus einer beliebigen Anzahl von Kanten zeichnen:

 <?php
// Bildgröße festlegen
$width = 400;
$height = 400;

// Erstellen Sie eine Leinwand
$image = imagecreatetruecolor($width, $height);

// Farben zuweisen
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

// Füllen Sie den Hintergrund
imagefill($image, 0, 0, $white);

// Polygonparameter
$number_of_sides = 7; // Zum Beispiel,Zeichnen Sie Heptagone
$radius = 150; // Radius
$centerX = $width / 2;
$centerY = $height / 2;

// Koordinatenpunkte generieren
$points = [];
for ($i = 0; $i < $number_of_sides; $i++) {
    $angle_deg = (360 / $number_of_sides) * $i - 90; // Zeichnen Sie von oben Zeichnen
    $angle_rad = deg2rad($angle_deg);
    $x = $centerX + $radius * cos($angle_rad);
    $y = $centerY + $radius * sin($angle_rad);
    $points[] = (int)$x;
    $points[] = (int)$y;
}

// Polygone zeichnen
imagepolygon($image, $points, $number_of_sides, $black);

// Bilder zum Browser ausgeben
header('Content-Type: image/png');
imagepng($image);

// Ressourcen zerstören
imagedestroy($image);
?>

Speichern Sie den obigen Code als PHP -Datei (z. B. Polygon.php ) und greifen Sie über den Browser darauf zu, Sie können ein reguläres Heptagon sehen.

Iv. Beispiel Beschreibung

  • Durch Anpassen der Variablen $ number_of_siden können Sie Polygone mit unterschiedlichen Seitenzahlen zeichnen.

  • $ radius bestimmt die Größe des Polygons;

  • Der Versatz des Winkels (hier ist -90 Grad) macht den ersten Scheitelpunkt oben und macht den Effekt schöner.

  • Wenn Sie das Bild auf dem Server speichern müssen, können Sie ImagePng ($ Image, 'path/to/file.png') verwenden.

Speichern Sie beispielsweise das Bild auf m66.net/uploads/polygon.png :

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

Achten Sie darauf, dass das Save -Verzeichnis eine Schreibberechtigung hat!

5. Zusammenfassung

Mit der Bildpolygonfunktion von PHP in Kombination mit einfachem trigonometrischem Betrieb können wir problemlos regelmäßige Polygone einer beliebigen Anzahl von Kanten zeichnen. Dies ist bei der Erstellung von Grafikgeneratoren, Verifizierungscodes und Diagrammkomponenten von großer Bedeutung. Wenn Sie in Zukunft ein Polygon mit Farbfüllung zeichnen möchten, können Sie auch die image -fähigpolygon () -Funktion zum Implementieren kombinieren.