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

Membentuk bentuk Piramida 3D menggunakan PyOpenGL

Pada postingan ini saya akan membuat bentuk piramida 3D menggunakan PyOpenGL Source Code: 1. Buat fungsi import modul from OpenGL.GL import* from OpenGL.GLU import:* from OpenGL.GLUT import* 2. Membuat variabel untuk mengatur sisi piramida_a dan sisi piramida_b. Kemudian mengatur latar belakang warna dan membuat ordo 2D piramida_a = 0 piramida_b = 0       def init():     glClearColor(0.,0.,0.,0.)     glEnable(GL_DEPTH_TEST)     gluOrtho2D(-20.0, 20.0, -20.0, 20.0) 3. Membuat fungsi myDisplay untuk membuat beberapa bagian piramid yaitu bagian bawah, bagian depan, bagian kiri, bagian kanan dan bagian belakang def myDisplay():     global piramida_a, piramida_b     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)     glMatrixMode(GL_MODELVIEW)     glLoadIdentity()     glTranslatef(0, 0, -5.0);     glRotatef( piramida_a, 1.0, 0.0, 0.0 )   ...

Membuat bentuk Matahari dengan PyOpenGL

Software yang digunakan: IDLE Pyhton 3.8.2 (IDLE) SOURCE CODE : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def init():     glClearColor(0.0, 0.0, 0.0, 0.0)     gluOrtho2D(-500.0, 500.0, -500.0, 500.0) # untuk membuat matahari kita akan gunakan bentuk segitiga yang di rotaasi sebanyak 18 kali dengan jarak sudut tiap rotasi sebanyak 20 derajat. def plotpoints():     glColor3f(1.,1.0,0.)     for i in range(0,19):         s = 20         glRotatef(s, 0.0, 0.0,1.0)         segitiga()            glFlush() # fungsi untuk membuat bentuk segitiga def segitiga():     glBegin(GL_TRIANGLES)     glVertex2f(-50.0,0.0)     glVertex2f(50.0,0.0)     glVertex2f(0.0,200.0)     glEnd() NOTE: Jika ingin bentuk segitiga bergaris gunakan GL_LINE_LOOP Jika ingin bentuk segitiga yang ada isi...

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...