Bunga mawar (rose) sering dijadikan subjek dalam berbagai karya seni, seperti potret, ilustrasi, lukisan dan juga sebagai subjek atau oranemen dalam arsitektur. Pelukis Perancis, Pierre-Joseph Redouté, terkenal dengan lukisan berbagai jenis bunga mawar yang digambar dengan sangat teliti. Nah, saya di sini tidak akan menggambar bunga mawar sedetail sang pelukis, atau bunga mawar sebagaimana alaminya, tetapi hanya akan menggambar sketsa bunga mawar saja dengan persamaan matematika dibantu dengan bahasa pemrograman Python.

Terinspirasi beberapa bentuk persamaan matematika dari gambar sketsa bunga mawar di halaman web Eric R. Weeks (ditulis dalam gawk script), yang idenya bermula dari “Mathographics” karya Robert Dixon, persamaan dasar untuk bunga mawar dapat ditulis dalam kordinat polar sebagai berikut :

x\left ( r, \theta \right )= r \cos \theta

y\left ( r, \theta \right )= r \sin \theta

dimana :

r=k\left ( a+\sin\left ( b\theta+\frac{k}{c} \right ) \right )

a, b dan c adalah parameter. Berikut ini salah satu satu contoh kode Python yang saya gunakan untuk membuat gambar sketsa dasar bunga mawar :

import matplotlib.pyplot as plt
import numpy as np

a = 15
b = 6
c = 100

theta = np.linspace(-2 * np.pi, 100, num=100)
k = np.linspace(0, 45, num=100)
r = k * (a+np.sin(theta*b+(k/c)))

x = r * np.cos(theta)
y = r * np.sin(theta)

plt.plot(x, y, color='r')
plt.axis('off')
plt.show()

Hasil plotnya :

Red Rose Flower (basic)

Sedikit modifikasi terhadap k pada persamaan r, dengan

k=\left ( \frac{0.8\theta}{2 \pi} \right ) + 3

Beberapa contoh gambar sketsa bunga mawar yang saya hasilkan dengan persamaan terkahir dapat dilihat pada 2 gambar berikut, saya sertakan juga salah satu contoh kode sumbernya di bagian paling bawah.

Red Rose

Sketsa bunga mawar dengan warna pink :

Pink Rose

Sedikit eksplorasi dengan :  k=\left ( \frac{0.8\theta}{2 \pi} \right ) + 1

Pink Rose

Dan ini sketsa gambar yang terakhir, tampak lebih indah dan cantik :

Sketsa Bunga Mawar

Contoh kode sumber untuk membuat plot terhadap persamaan polar gambar ketiga (gambar yang kedua didapatkan dengan membuat variasi pada nilai parameter a, b dan c) :

import matplotlib.pyplot as plt
import numpy as np

a = 8
b = 6
c = 3

theta = np.linspace(0, 45 * 2* np.pi, num=10000)
k = (0.8*theta/(2*np.pi)+3)
r = k *(a+np.sin(theta*b+(k/c)))

x = r * np.cos(theta)
y = r * np.sin(theta)

plt.plot(x, y, color='#CC0066')
plt.axis('off')
plt.show()
About these ads