Menggambar Objek Spiral Berbentuk Hati (Heart)

Menggambar Objek Spiral Berbentuk Hati (Heart)


Bahas Pemograman Yang digunakan dan aplikasi yang di gunakan:
  1. Python 3.8.2
  2. Apk Editor : Visual Code (Vs Code)


Modul yang Python yang dipakai:
  1. PyOpenGL                    3.1.5
  2. PyOpenGL-accelerate   3.1.5
  3. numpy                           1.18.2


Source Code:

pertama Masukan modul PyOpenGL dan modul numpy 

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import numpy as np


penjelasan program:

  • Fungsi init:
def init():
    glClearColor(0.0, 0.0, 0.0, 0.0)
    gluOrtho2D(-2.0, 2.0, -2.0, 2.0)

  1. fungsi def init(): untuk menginilisasi window.
  2. glClearColor(): memberi warna latar belakan pada kanvas, sebagai contoh (0.0, 0.0, 0.0, 0.0) adalah warna hitam.
  3. gluOurtho2D(): pernyataan ini digunakan untuk menyatakan ukuran system koordinat dengan struktur(X min, X max, Y min, Y max).
  4. fungsi def ploting(): untuk membuat sebuah gambar.


  • Fungsi heart_spiral_object():
def heart_spiral_object():
    glBegin(GL_LINE_STRIP)
    glColor3f(0.7, 0.0, 0.0)
    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()

  1. glBegin(GL_LINE_STRIP) adalah untuk membuat dan mengatur sebuah pola pada gambar.
  2. glColor3f(1.0, 0.4, 0.5) adalah untuk memberi warna pada objek dengan kode warna RGB
  3. x adalah objek yang akan di gambar.
  4. np adalah modul numpy yang di panggil.
  5. np.cbrt adalah fungsi matematika untuk membantu menghitung akar pangkat tiga dari x untuk semua x sebagai elemen.
  6. np.sgrt adalah fungsi yang digunakan untuk menetukan akar kuadarat positif dari array berdasarkan elemen



  • Fungsi plotpoints:
def plotpoints():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1, 1.0, 1.0)
    glPointSize(15)
    glBegin(GL_LINES)
    glVertex2f(-500, 0)
    glVertex2f(500, 0)
    glVertex2f(0, -500)
    glVertex2f(0, 500)
    glEnd()
    heart_spiral_object()
    glFlush()
  1. fungsi def plotpoints(): untuk membuat sebuah gambar.
  2. glClear(): untuk memberi warna pada window yang sudah di inilisasi.
  3. glColor3f(): untuk memberi warna pada objek dengan kode warna RGB.
  4. glBegin(): untuk membuat dan mengatur sebuah pola pada gambar.
  5. glPointSize() : untuk mengambar besar titik yang akan di gambar
  6. glVertex2f(): untuk menentukan koordinat gambar yaitu X, dan y.
  7. glend(): untuk mengakhiri sebuah program.
  8. heart_spiral_object(): untuk memangil fungsi def  heart_spiral_object()
  9. glFlush(): merupakan sintaks untuk memastikan gambar bisa di eksekusi



  • Fungsi Main():
def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(500, 500)
    glutInitWindowPosition(100, 100)
    glutCreateWindow("Gambar Objek Spiral Hati Pertemuan 5 Wiwit Farianto")
    glutDisplayFunc(plotpoints)
    init()
    glutMainLoop()
main()

  1. fungsi def main(): untuk mendeklarsikan fungsi window.
  2. glutInit(): untuk membuat sebuah tampilan window.
  3. glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB): untuk menginisialisasi layar grafis menggunakan OpenGL.
  4. glutInitWindowSize(500,500) : untuk mengatur ukuran sebuah kanvas, dicontohkan perintah atas posisi kiri atas di titik (500, 500).
  5. glutInitWindowPosition(100,100): perintah ini untuk menginisialisasi posisi kiri atas kanvas/ window.
  6. glutCreateWindow("Gambar Objek Spiral Hati Pertemuan 5 Wiwit Farianto") pernyataan di atas untuk membuat judu pada kanvas.
  7. glutDisplayFunc(ploting): pernyataan ini digunakan untuk menampilkan semua perintah grafis yang ada di fungsi.  
  8. glutMainLoop(): event yang menandakan pemrosesan glut terjadi.

Source Code Keseluruhan:
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

import numpy as np


def init():
    glClearColor(0.00.00.00.0)
    gluOrtho2D(-2.02.0, -2.02.0)


def heart_spiral_object():
    glBegin(GL_LINE_STRIP)
    glColor3f(0.70.00.0)
    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 plotpoints():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(11.01.0)
    glPointSize(15)
    glBegin(GL_LINES)
    glVertex2f(-5000)
    glVertex2f(5000)

    glVertex2f(0, -500)
    glVertex2f(0500)
    glEnd()
    heart_spiral_object()
    glFlush()


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(500500)
    glutInitWindowPosition(100100)
    glutCreateWindow("Gambar Objek Spiral Hati Pertemuan 5 Wiwit Farianto")
    glutDisplayFunc(plotpoints)

    init()
    glutMainLoop()

main()

Hasil Program setelah Dirun:

Komentar