Selasa, 31 Maret 2020

Menggambar Hati Pada Python


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