Menggambar Kristal Salju Fraktal (Snowflakes) Menggunakan Sistem Lindenmayer (L-Systems) di LaTeX TikZ

Artikel ini membahas teori fraktal Sistem Lindenmayer (L-Systems) dan teknik pemodelan geometri kristal salju (snowflakes) dengan simetri heksagonal di LaTeX TikZ.
Pendahuluan
Di alam bebas, kepingan salju (snowflake) terbentuk dari pembekuan uap air yang mengkristal dengan struktur molekul heksagonal. Akibatnya, hampir seluruh kristal salju memiliki simetri radial 6 lipat (rotasi ).
Dalam ilmu komputer dan matematika fraktal, salah satu metode paling elegan untuk memodelkan struktur fraktal yang memiliki percabangan berulang adalah Sistem Lindenmayer (L-Systems), yang digagas oleh ahli biologi teoritis Aristid Lindenmayer pada tahun 1968.
Artikel ini mengulas teknik pengodean LaTeX TikZ karya Jose Luis Diaz (JLDiaz). Dengan mendefinisikan aturan pembentukan satu “lengan” atau cabang kristal salju menggunakan pustaka lindenmayersystems, lalu memutarnya secara otomatis sebanyak 6 kali (\foreach \a in {0,60,...,300}), kita dapat menghasilkan beragam ilustrasi kristal salju yang sangat presisi dan estetis.
Konsep Matematika: Sistem Lindenmayer (L-Systems)
Sebuah Sistem Lindenmayer formal dinyatakan sebagai kuintupel :
- (Alfabet Variabel): Simbol yang dapat digantikan oleh aturan produksi (misalnya
F,G,H). Pada grafis TikZ,Fmenginstruksikan pena untuk maju melukis garis sejauhstep. - (Alfabet Konstanta): Simbol kontrol gerakan pena:
+: Diputar berlawanan arah jarum jam sebesar sudutangle.-: Diputar searah jarum jam sebesar sudutangle.[: Menyimpan koordinat dan arah pena saat ini ke dalam tumpukan (stack).]: Mengembalikan posisi dan arah pena dari tumpukan (digunakan untuk membuat percabangan).
- (Aksioma / State Awal): String awal sebelum iterasi dimulai (misalnya
axiom=F). - (Aturan Produksi / Production Rules): Aturan substitusi rekursif yang menggantikan setiap variabel dengan string baru pada setiap tingkat kedalaman (order).
Kode Sumber LaTeX
Berikut adalah kode lengkap buatan Jose Luis Diaz untuk mengomputasi berbagai variasi kristal salju:
% Snowflakes with TikZ
% Author: Jose Luis Diaz (JLDiaz)
\documentclass{article}
\usepackage[textwidth=6cm]{geometry}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{center}
\setlength\PreviewBorder{10pt}%
\usetikzlibrary{lindenmayersystems}
% -------------------------------------------------------------
% Deklarasi Aturan L-System untuk Cabang Kristal Salju
% -------------------------------------------------------------
\pgfdeclarelindenmayersystem{A}{
\rule{F -> FF[+F][-F]}
}
\pgfdeclarelindenmayersystem{B}{
\rule{F -> ffF[++FF][--FF]}
}
\pgfdeclarelindenmayersystem{C}{
\symbol{G}{\pgflsystemdrawforward}
\rule{F -> F[+F][-F]FG[+F][-F]FG}
}
\pgfdeclarelindenmayersystem{D}{
\symbol{G}{\pgflsystemdrawforward}
\symbol{H}{\pgflsystemdrawforward}
\rule{F -> H[+HG][-HG]G}
\rule{G -> HF}
}
% Style Default untuk L-System
\tikzset{
type/.style={
l-system={#1, axiom=F, order=3, step=4pt, angle=60},
blue, opacity=0.4, line width=.5mm, line cap=round
},
}
% Makro Penggambar Kepingan Salju (Simetri Rotasi 6 Lipat)
\newcommand\drawsnowflake[2][scale=0.2]{
\tikz[#1] \foreach \a in {0,60,...,300} {
\draw[rotate=\a,#2] l-system;
};
}
\begin{document}
\begin{center}
% Variasi Sistem A dengan Berbagai Ketebalan Garis
\foreach \width in {.2,.4,...,.8} {
\drawsnowflake[scale=0.3]{type=A, line width=\width mm}
}
% Variasi Sistem A dengan Sudut 90 Derajat
\foreach \width in {.2,.4,...,.8} {
\drawsnowflake[scale=0.38]{type=A, l-system={angle=90}, line width=\width mm}
}
% Variasi Sistem B
\foreach \width in {.2,.4,...,.8} {
\drawsnowflake[scale=0.3]{type=B, line width=\width mm}
}
\foreach \width in {.2,.4,...,.8} {
\drawsnowflake{type=B, l-system={angle=30}, line width=\width mm}
}
% Variasi Sistem C & D dengan Aksioma Berbeda
\drawsnowflake[scale=0.24]{type=C, l-system={order=2}, line width=0.2mm}
\drawsnowflake[scale=0.25]{type=C, l-system={order=2}, line width=0.4mm}
\drawsnowflake[scale=0.25]{type=C, l-system={order=2,axiom=fF}, line width=0.2mm}
\drawsnowflake[scale=0.32]{type=C, l-system={order=2,axiom=---fff+++F}, line width=0.2mm}
\drawsnowflake[scale=0.38]{type=D, l-system={order=4,angle=60,axiom=GF}, line width=0.7mm}
\drawsnowflake[scale=0.38]{type=D, l-system={order=4,angle=60,axiom=GfF}, line width=0.7mm}
\drawsnowflake[scale=0.38]{type=D, l-system={order=4,angle=60,axiom=FG}, line width=0.7mm}
\drawsnowflake[scale=0.38]{type=D, l-system={order=4,angle=60,axiom=FfG}, line width=0.7mm}
\end{center}
\end{document}Hasil Kompilasi
Keluaran kompilasi menghasilkan galeri kepingan salju dengan keanekaragaman bentuk kristal yang sangat memukau:

Analisis Struktur & Logika Kode
1. Pustaka lindenmayersystems
Pustaka bawaan TikZ \usetikzlibrary{lindenmayersystems} memungkinkan pengembang untuk mendefinisikan sistem pembacaan string fraktal secara otomatis tanpa perlu menulis rekursi manual yang rumit.
2. Deklarasi Aturan Produksi
Sebagai contoh pada Sistem A:
\pgfdeclarelindenmayersystem{A}{
\rule{F -> FF[+F][-F]}
}- Pada
order=1,Fberubah menjadiFF[+F][-F]. - Pada
order=2, setiapFdi dalam string hasil dikembangkan lagi menjadiFF[+F][-F]. - Pasangan kurung siku
[+F]dan[-F]menciptakan dua ranting cabang simetris yang mencuat ke kiri dan ke kanan.
3. Rotasi Simetri Radial 6 Lipat
Kunci pembentukan kepingan salju utuh terletak pada perintah makro \drawsnowflake:
\newcommand\drawsnowflake[2][scale=0.2]{
\tikz[#1] \foreach \a in {0,60,...,300} {
\draw[rotate=\a,#2] l-system;
};
}Perintah \foreach \a in {0,60,...,300} menduplikasi dan memutar 1 cabang hasil L-System pada sudut dan .
Eksperimen Variasi TikZ
Anda dapat mencoba beberapa eksperimen menarik untuk menciptakan pola kristal salju baru:
- Mengubah Sudut Rotasi (
angle): Ubahangle=60menjadiangle=45untuk membuat kristal salju 8 lipat (8-fold symmetry) dengan perulangan\foreach \a in {0,45,...,315}. - Mengubah Kedalaman Rekursi (
order): Naikkanorder=3menjadiorder=4atauorder=5untuk menghasilkan cabang fraktal yang lebih halus dan padat. - Pewarnaan Kustom:
Ubah warna
blue, opacity=0.4menjadicyan!80!blackatau tambahkan gradasi efek kilauan es.
Kesimpulan
Kode TikZ karya Jose Luis Diaz ini merupakan contoh cemerlang bagaimana matematika L-Systems dan simetri rotasi dapat digabungkan di LaTeX. Hanya dengan beberapa baris aturan fraktal sederhana, kita dapat memproduksi puluhan kristal salju dengan presisi tinggi.
Referensi
- Jose Luis Diaz, Snowflakes with TikZ, TeXample.net
- Przemyslaw Prusinkiewicz & Aristid Lindenmayer, The Algorithmic Beauty of Plants, Springer-Verlag, 1990.
- Till Tantau, The TikZ and PGF Manual, v3.1.10, 2024.
Ditulis oleh: Aan Triono
Lisensi: CC BY-SA 4.0




