Skip to main content

Membuat Lingkaran Tak Beraturan Menggunakan PyOpenGL

Library Yang Digunakan

  • PyOpenGL_accelerate-3.1.5
  • OpenGLContext 2.3.0
  • PyVRML97 2.3.1
  1. Tambahkan Library OpenGLContext
  2. from OpenGL.GL import *
    from OpenGL.GLU import *
    from OpenGL.GLUT import *
  3. Tambahkan variable global untuk mengatur warna pada teks serta tulisan
  4. # Koordinat x dan y untuk posisi kotak
    pos_x = 0
    pos_y = 0

    # Warna Kotak
    red = 0
    green = 0
    blue = 0

    # Warna Teks
    txtred = 1
    txtgreen = 1
    txtblue = 1

    # Teks Warna Objek
    warna_objek = "Hitam"

    # Teks Warna Background
    warna_background = "Hitam"
  5. Tambahkan fungsi drawBitmap Text(), reshape(), dan drawText untuk memproyeksikan teks pada window
  6. def init():
        glClearColor(0.0, 0.0, 0.0, 1.0)
        gluOrtho2D(-500.0, 500.0, -500.0, 500.0)

    def drawBitmapText(string,x,y,z) :
        glRasterPos3f(x,y,z)
        for c in string :
            glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,ord(c))

    def drawText():
        glColor3f(txtred,txtgreen,txtblue)
        drawBitmapText("Warna",-460,-350,0)
        drawBitmapText("Objek : " + warna_objek,-460,-400,0)
        drawBitmapText("Background : " + warna_background ,-460,-450,0)
  7. Membuat fungsi untuk membuat lingkaran
  8. # Membuat bentuk lingkaran
    def segitiga():
        global pos_x, pos_y
        glColor3f(red,green,blue)

        glBegin(GL_LINE_LOOP)
        # Kiri Atas
        glVertex2f(-50 + pos_x,-50 + pos_y)
        # Kanan Atas
        glVertex2f(50 + pos_x,-50 + pos_y)
        # Kanan Bawah
        glVertex2f(50 + pos_x,50 + pos_y)
        # Kiri Bawah
        glVertex2f(-50 + pos_x,50 + pos_y)
        glEnd()
  9. Membuat fungsi display untuk melakukan perulangan lingkaran sehingga membentuk lingkaran tak berarturan
  10. def display():
        glClear(GL_COLOR_BUFFER_BIT)

        glColor3f(1.0,0.7,0.0)
        for i in range(0,19):
            s = 20
            glRotatef(s, 0.0, 0.0,1.0)
            segitiga()
            drawText();
           
        glFlush()
  11. Membuat fungsi input mouse untuk mengubah objek sesuai dengan klik yang ditekan
  12. def input_mouse(button, state, x, y):
        global red, green, blue
        global warna_objek
     
        # Klik kanan = objek merah hijau/biru
        if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
            if green < 1:
                red = 0
                green = 1
                blue = 0
                warna_objek = "Hijau"
            elif blue < 1:
                red = 0
                green = 0
                blue = 1
                warna_objek = "Biru"
            print("Klik Kanan ditekan ", "(", x, ",", y, ")")
        # Klik kiri = objek merah hitam/merah
        elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
            if red < 1:
                red = 1
                green = 0
                blue = 0
                warna_objek = "Merah"
            else:
                red = 0
                green = 0
                blue = 0
                warna_objek = "Hitam"
            print("Klik Kiri ditekan ", "(", x, ",", y, ")")
  13. Membuat fungsi untuk input keyboard
  14. def input_keyboard(key,x,y):
        global pos_x, pos_y
        global warna_background
        global txtred, txtgreen, txtblue
  15. Code untuk membuat posisi kotak berubah
  16.  # Untuk mengubah posisi objek
        if key == GLUT_KEY_UP:
            pos_y += 5
            print("Tombol Atas ditekan ", "x : ", pos_x, " y : ", pos_y)
        elif key == GLUT_KEY_DOWN:
            pos_y -= 5
            print("Tombol Bawah ditekan ", "x : ", pos_x, " y : ", pos_y)
        elif key == GLUT_KEY_RIGHT:
            pos_x += 5
            print("Tombol Kanan ditekan ", "x : ", pos_x, " y : ", pos_y)
        elif key == GLUT_KEY_LEFT:
            pos_x -= 5
            print("Tombol Kiri ditekan ", "x : ", pos_x, " y : ", pos_y)
  17. Membuat warna background window berbeda tiap kotak
  18. # Ubah warna bg window
        # Background Kiri Atas berubah warna menjadi Merah
        if pos_x < 0 and pos_y > 0:
            glClearColor(1.0, 0.0, 0.0, 1.0)
            warna_background = "Merah"
            txtred = 0
            txtgreen = 0
            txtblue = 0

        # Background Kiri Bawah berubah warna menjadi Hitam
        if pos_x < 0 and pos_y < 0:
            glClearColor(0.0,0.0,0.0,1.0)
            warna_background = "Hitam"
            txtred = 1
            txtgreen = 1
            txtblue = 1

        # Background Kanan Atas berubah warna menjadi Hijau
        if pos_x > 0 and pos_y > 0:
            glClearColor(0.0, 1.0, 0.0, 1.0)
            warna_background = "Hijau"
            txtred = 0
            txtgreen = 0
            txtblue = 0

        # Background Kanan Bawah berubah warna menjadi Biru
        if pos_x > 0 and pos_y < 0:
            glClearColor(0.0,0.0,1.0,1.0)
            warna_background = "Biru"
            txtred = 1
            txtgreen = 1
            txtblue = 1
  19. Membuat fungsi update
  20. def update(value):
        glutPostRedisplay()
        glutTimerFunc(10,update,0)
  21. membuat fungsi main
  22. def main():
        glutInit(sys.argv)
        glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
        glutInitWindowSize(500,500)
        glutInitWindowPosition(100,100)
        glutCreateWindow("Quiz_17102036")
        glutDisplayFunc(display)
        glutSpecialFunc(input_keyboard)
        glutMouseFunc(input_mouse)
        glutTimerFunc(50, update, 0)
        init()
        glutMainLoop()
    main()
OUTPUT JIKA DIRUN



Comments

Popular posts from this blog

Membuat Lingkaran Dengan Algoritma Bresenham

                      Lingkaran adalah kumpulan dari titik-titik yang memiliki jarak dari titik  pusat yang sama untuk semua titik.   Lingkaran dibuat dengan  menggambarkan seperempat lingkaran, karena bagian lain dapat dibuat  sebagai bagian yang simetris. Penambahan x dapat dilakukan dari 0 ke r  sebesar unit step, yaitu menambahkan ± y untuk setiap step.  Pada dasarnya, mirip dengan penggambaran garis, algoritma  penggambaran lingkaran pun berusaha mencari solusi optimal sedemikian  rupa sehingga lingkaran yang dibentuk adalah sesempurna mungkin. Software yang diperlukan : 1. IDLE Pyhton 3.7  (IDLE) Dibawah ini Import Library Pada Python 3.7  : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * Link Download Library Python : https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl Pilih Library Pyhton Yang Di bawah ini : 1. PyOpe...

Membuat Obyek Rumah

Tugas Grafika Komputer kali ini adalah membuat gambar rumah menggunakan OpenGL di python. Gambarnya seperti berikut: Disini saya akan menjelaskan sedikit tentang apasih Grafika Komputer itu. Grafika Komputer adalah bagian ilmu komputer yang berkaita dengan pembuatan dan manipulasi gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra(image processing), dan pengenalan pola dengan istilah visualisasi data. OpenGL(Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2D maupun 3D.Dalam meletakkan suatu objek pada layer diperlukan pengetahuan tentang sistem koordinat. Software yang diperlukan: 1. IDLE Python 3.8.2(IDLE) Download Library Phyton: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl Library Pyhton Yang Digunakan : 1. ...

Membuat Objek Spiral Berbentuk Love Menggunakan OpenGL

Software yang diperlukan : 1. IDLE Pyhton 3.7  (IDLE) Dibawah ini Import Library Pada Python 3.7  : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * Link Download Library Python : https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl Pilih Library Pyhton Yang Di bawah ini : 1. PyOpenGL_accelerate-3.1.5-cp38-cp38-win32.whl 2. PyOpenGL-3.1.5-cp38-cp38-win32.whl (Jika Pyhton yang digunakan adalah pyhton 32 bit, maka Download library yang sesuai dengan bit python pada perangkat masing- masing. Begitu juga sebaliknya jika Pyhton 64 bit).   Berikut adalah Full Source Code nya : 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...