Gambar Objek Spiral Berbentuk Hati Menggunakan Python
Simbol hati adalah
simbol yang sejak lama digunakan untuk menunjukkan spiritualitas, emosi, moral,
dan pada masa lalu, juga sebagai pusat kecerdasan manusia. Gambar/symbol hati
dapat kita gambar dimana saja, namun kali ini saya akan menggambarnya dengan
menggunakan Bahasa pemrograman Python.
Pertama, yang
harus dilakukan sebelum masuk ke program adalah pastikan kita sudah menginstall
library Numpy dan Matplotlib. Numpy merupakan library yang digunakan untuk
operasi vector dan matriks. Sedangkan Matplotlib merupakan library yang
digunakan untuk menyajikan data ke dalam visual yang lebih baik. Nah berikut
adalah cara menginstallnya :
1. Bula
CMD.
2. Masukkan
perintah “pip install opencv-python” nah pada proses ini kita tunggu saja proses
instalasi OpenCV. Pastikan laptop kita terkoneksi dengan internet.
3. Masukkan
perintah “pip install numpy” biasanya Numpy akan otomatis terinstall jika
instalasi OpenCV telah sukses terinstall.
4. Selanjutnya
adalah Matplotlib. Ketikkan perintah “pip install matplotlib” tunggu hingga
proses selesai.
5. Nah
jika proses sudah selesai maka kita bisa lanjut ke coding.
Pada awal program
jangan lupa untuk meng import Numpy. Apabila berhasil maka Numpy berhasil
diinstall. Lalu masukkan fungsi init(), init sendiri merupakan suatu method
bawaan python. Di dalam fungsi ini terdapat glClearColor dan gluOrtho2D.
glClearColor digunakan untuk memilih warna yang digunakan untuk membersihkan latar
dalam mode RGBA. Dan gluOrtho2D digunakan untuk membuat window dengan sudut
kiri bawah di left, bottom dan sudut kanan atas di right, top.
def
init():
glClearColor(0.0, 0.0, 0.0, 0.0)
gluOrtho2D(-2.0, 2.0, -2.0, 2.0)
Selanjutnya adalah masukkan fungsi plotpoints().
Di dalamnya terdapat :
·
glClear(GL_COLOR_BUFFER_BIT)
untuk membersihkan layar latar belakang dengan warna hitam.
·
glColor3f untuk menentukan
warna garis/titik.
·
glPointSize untuk
mengatuk besar titik yang akan digambar.
·
glBegin (GL_LINES) untuk
menggambar garis dari titik.
·
glVertex2f untuk
menentukan titik awal dan akhir.
·
glEnd() untuk mengakhiri
gambar garis dititik akhir.
·
heart_shape() adalah
fungsi.
·
glFlush() untuk
memastikan gambar bisa dieksekusi.
def
plotpoints():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(1, 1.0, 1.0)
glPointSize(13)
glBegin(GL_LINES)
glVertex2f(-500, 0)
glVertex2f(500, 0)
glVertex2f(0, -500)
glVertex2f(0, 500)
glEnd()
heart_shape()
glFlush()
Masukkan fungsi heart_shape(). Disini
lah library fungsi digunakan karena di dalam fungsi ini terdapat operasi-operasi
perhitungan agar membentuk gambar hati.
def
heart_shape():
glBegin(GL_LINE_STRIP)
glColor3f(1.0, 0.3, 0.6)
x = -1.140
while(x <= 1.140):
delta = np.cbrt(x*x) * np.sqrt(x*x) -
4*x*x + 4
y1 = (np.cbrt(x*x) + np.sqrt(delta)) /
2
y2 = (np.cbrt(x*x) - np.sqrt(delta)) /
2
glVertex2f(x, y1)
glVertex2f(x, y2)
x += 0.001
glEnd()
Langkah terakhir adalah definisikan
fungsi main().
·
glutInit(sys.argv) untuk
mengatur pembuatan window.
· glutInitDisplayMode(GLUT_SINGLE
| GLUT_RGB) untuk meminta window yang bersifat double buffered, dengan warna
RGB.
· glutInitWindowSize untuk
membuat window dengan ukuran sesuai dengan parameter yang dituliskan.
· glutInitWindowPosition untuk
membuat window dengan letak sesuai dengan parameter yang dituliskan.
· glutCreateWindow("Gambar
Hati (Alma Alfiatul Inayah)") untuk membuat dan mengatur jendela dengan
judul “Gambar Hati (Alma Alfiatul Inayah)”.
·
glutDisplayFunc(plotpoints)
untuk pemanggilan display.
·
glutMainLoop() untuk
perulangan display agar program tidak berhenti.
def
main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutInitWindowSize(500, 500)
glutInitWindowPosition(100, 100)
glutCreateWindow("Gambar Hati (Alma
Alfiatul Inayah)")
glutDisplayFunc(plotpoints)
init()
glutMainLoop()
Berikut adalah code program
lengkapnya :
from
OpenGL.GL import *
from
OpenGL.GLU import *
from
OpenGL.GLUT import *
import
numpy as np
def
init():
glClearColor(0.0, 0.0, 0.0, 0.0)
gluOrtho2D(-2.0, 2.0, -2.0, 2.0)
def
plotpoints():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(1, 1.0, 1.0)
glPointSize(13)
glBegin(GL_LINES)
glVertex2f(-500, 0)
glVertex2f(500, 0)
glVertex2f(0, -500)
glVertex2f(0, 500)
glEnd()
heart_shape()
glFlush()
def
heart_shape():
glBegin(GL_LINE_STRIP)
glColor3f(1.0, 0.3, 0.6)
x = -1.140
while(x <= 1.140):
delta = np.cbrt(x*x) * np.sqrt(x*x) -
4*x*x + 4
y1 = (np.cbrt(x*x) + np.sqrt(delta)) /
2
y2 = (np.cbrt(x*x) - np.sqrt(delta)) /
2
glVertex2f(x, y1)
glVertex2f(x, y2)
x += 0.001
glEnd()
def
main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutInitWindowSize(500, 500)
glutInitWindowPosition(100, 100)
glutCreateWindow("Gambar Hati (Alma
Alfiatul Inayah)")
glutDisplayFunc(plotpoints)
init()
glutMainLoop()
main()
Output :
Tidak ada komentar:
Posting Komentar