Daftar Isi

Menggambar Pola Spiral Poligon Berotasi Berulang (Rotated Polygons) dengan TikZ di LaTeX

Artikel ini membahas cara menggambar pola ilusi optik spiral poligon berotasi bertingkat (nested rotated polygons) menggunakan perulangan dan gradasi warna di LaTeX TikZ.


Salah satu efek visual paling memukau dalam geometri fraktal dan seni optik (op-art) adalah pola spiral yang dibentuk oleh segi banyak (poligon) yang saling bersarang secara berulang.

Ketika sebuah poligon diputar sedikit demi sedikit dan diperkecil skalanya secara bertahap menuju pusat, mata kita menangkap ilusi pusaran (vortex) tiga dimensi yang sangat dalam.

Artikel ini mengulas kode LaTeX TikZ karya Dr. rer. nat. Ismael Gutierrez Garcia (yang memperluas konsep segitiga berotasi karya Alain Matthes). Melalui kode ini, kita akan mempelajari bagaimana perulangan sederhana \foreach, perhitungan titik relatif pos=.10, serta gradasi intensitas warna dapat menghasilkan bentuk pola segi-6 (hexagon), segi-5 (pentagon), dan segi-4 (square) yang sangat indah.


Berikut adalah kode lengkap untuk menggambar tiga variasi pola poligon berotasi:

% Rotated polygons
% Author: Dr. rer. nat. Ismael Gutierrez Garcia
\documentclass{article}
\usepackage[usenames,dvipsnames,pdftex]{xcolor}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
\usepackage{ifthen}

\begin{document}

% -------------------------------------------------------------
% 1. SEGI-SEMAN BEROTASI (ROTATED HEXAGON - BlueGreen)
% -------------------------------------------------------------
\newcounter{density}
\setcounter{density}{20}

\begin{tikzpicture}
  \def\couleur{BlueGreen}
  
  % Penentuan Koordinat Simpul Awal Hexagon
  \path[coordinate] (0,0) coordinate(A)
    ++( 120:6cm) coordinate(B)
    ++( 60:6cm) coordinate(C)
    ++(  0:6cm) coordinate(D)
    ++(-60:6cm) coordinate(E)
    ++(240:6cm) coordinate(F);
    
  \draw[fill=\couleur!\thedensity] (A) -- (B) -- (C) --(D) -- (E) -- (F)-- cycle;

  % Perulangan Rotasi & Skala 40 Langkah
  \foreach \x in {1,...,40}{
    \pgfmathsetcounter{density}{\thedensity+10}
    \setcounter{density}{\thedensity}
    
    \path[coordinate] coordinate(X) at (A){};
    \path[coordinate]
      (A) -- (B) coordinate[pos=.10](A)
      -- (C) coordinate[pos=.10](B)
      -- (D) coordinate[pos=.10](C)
      -- (E) coordinate[pos=.10](D)
      -- (F) coordinate[pos=.10](E)
      -- (X) coordinate[pos=.10](F);
      
    \draw[fill=\couleur!\thedensity] (A)--(B)--(C)--(D)--(E)--(F)--cycle;
  }
\end{tikzpicture}

% -------------------------------------------------------------
% 2. SEGI-LIMA BEROTASI (ROTATED PENTAGON - LimeGreen)
% -------------------------------------------------------------
\setcounter{density}{20}

\begin{tikzpicture}
  \def\couleur{LimeGreen}
  
  \path[coordinate] (0,0) coordinate(A)
    ++( 144:10cm) coordinate(B)
    ++( 72:10cm) coordinate(C)
    ++(  0:10cm) coordinate(D)
    ++(-72:10cm) coordinate(E);
    
  \draw[fill=\couleur!\thedensity] (A) -- (B) -- (C) --(D) -- (E) -- cycle;

  \foreach \x in {1,...,40}{
    \pgfmathsetcounter{density}{\thedensity+10}
    \setcounter{density}{\thedensity}
    
    \path[coordinate] coordinate(X) at (A){};
    \path[coordinate]
      (A) -- (B) coordinate[pos=.10](A)
      -- (C) coordinate[pos=.10](B)
      -- (D) coordinate[pos=.10](C)
      -- (E) coordinate[pos=.10](D)
      -- (X) coordinate[pos=.10](E);
      
    \draw[fill=\couleur!\thedensity] (A)--(B)--(C)--(D)--(E)--cycle;
  }
\end{tikzpicture}

% -------------------------------------------------------------
% 3. PERSEGI BEROTASI (ROTATED SQUARE - OrangeRed)
% -------------------------------------------------------------
\setcounter{density}{20}

\begin{tikzpicture}
  \def\couleur{OrangeRed}
  
  \path[coordinate] (0,0) coordinate(A)
    ++( 90:12cm) coordinate(B)
    ++(  0:12cm) coordinate(C)
    ++(-90:12cm) coordinate(D);
    
  \draw[fill=\couleur!\thedensity] (A) -- (B) -- (C) --(D) -- cycle;

  \foreach \x in {1,...,40}{
    \pgfmathsetcounter{density}{\thedensity+20}
    \setcounter{density}{\thedensity}
    
    \path[coordinate] coordinate(X) at (A){};
    \path[coordinate]
      (A) -- (B) coordinate[pos=.10](A)
      -- (C) coordinate[pos=.10](B)
      -- (D) coordinate[pos=.10](C)
      -- (X) coordinate[pos=.10](D);
      
    \draw[fill=\couleur!\thedensity] (A)--(B)--(C)--(D)--cycle;
  }
\end{tikzpicture}

\end{document}

Keluaran visual yang dihasilkan memperlihatkan tiga bentuk pola poligon dengan kedalaman warna dan rotasi yang sangat anggun:

Rotated Polygons TikZ
Hasil Kompilasi Rotated Polygons TikZ


Koordinat simpul diawali dari titik asal (0,0) lalu dihubungkan menggunakan sistem koordinat polar ++(sudut:jarak):

  • Hexagon (Segi-6): Menggunakan interval sudut 6060^\circ (120:6cm, 60:6cm, 0:6cm, -60:6cm, 240:6cm).
  • Pentagon (Segi-5): Menggunakan interval sudut 7272^\circ (144:10cm, 72:10cm, 0:10cm, -72:10cm).
  • Persegi (Segi-4): Menggunakan interval sudut 9090^\circ (90:12cm, 0:12cm, -90:12cm).

Rahasia rotasi dan penskalaan otomatis terletak pada baris berikut:

\path[coordinate] coordinate(X) at (A){};
\path[coordinate] (A) -- (B) coordinate[pos=.10](A)
                  -- (C) coordinate[pos=.10](B) ...
  • Variabel X menyimpan posisi awal simpul AA sebelum diperbarui.
  • Opsi pos=.10 mengambil titik yang berada pada jarak 10%10\% sepanjang garis dari AA ke BB, lalu menetapkannya sebagai nilai simpul AA yang baru.
  • Karena setiap simpul digeser sejauh 10%10\% menuju simpul berikutnya secara siklis, poligon hasil penggabungan simpul baru ini secara otomatis terputar sekaligus menyusut.

Di setiap iterasi perulangan, nilai density dinaikkan secara bertahap:

\pgfmathsetcounter{density}{\thedensity+10}
\draw[fill=\couleur!\thedensity] (A)--(B)...;
  • Sintaks BlueGreen!20 mewarnai poligon terluar dengan 20% warna BlueGreen dan 80% putih.
  • Seiring perulangan berjalan menuju pusat, persentase warna terus bertambah (30%, 40%, 50%, …), memberikan efek pencahayaan gradasi kedalaman 3D.

Anda dapat mencoba beberapa modifikasi menarik:

  1. Mengubah Kecepatan Rotasi (pos): Ubah pos=.10 menjadi pos=.05 untuk rotasi yang lebih halus dan banyak lapisan, atau pos=.20 untuk putaran yang lebih tajam.
  2. Mengubah Jumlah Iterasi: Ubah \foreach \x in {1,...,40} menjadi 1,...,60 untuk pusaran yang terus mengecil sampai ke titik pusat absolut.
  3. Kombinasi Warna Kustom: Gunakan palet warna lain dari paket xcolor seperti RoyalBlue, PurplishRed, atau Goldenrod.

Kode TikZ karya Dr. Ismael Gutierrez Garcia ini membuktikan betapa perkasa dan sederhananya algoritma berulang pada TikZ. Hanya dengan menggabungkan sintaks interpolasi posisi pos=.10 dan pengubahan nilai transparansi warna, kita dapat menghasilkan karya ilustrasi geometri fraktal yang sangat menawan.


  1. Ismael Gutierrez Garcia, Rotated polygons, TeXample.net
  2. Alain Matthes, Rotated triangle, TeXample.net
  3. Till Tantau, The TikZ and PGF Manual, v3.1.10, 2024.

Ditulis oleh: Aan Triono
Lisensi: CC BY-SA 4.0