This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Tuesday, June 9, 2020

Membuat bangun segitiga 3D (Piramida) menggunakan OpenGL

Halo teman teman kali ini saya kembali membawa sedikit ilmu tuk dibagikan yaitu tentang Membuat bangun segitiga 3D (Piramida) menggunakan OpenGL

Berikut kodenya

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

piramid_a = 0
piramid_b = 0

def init():
    glClearColor(0.,0.,0.,0.)
    glEnable(GL_DEPTH_TEST)
    gluOrtho2D(-20.0, 20.0, -20.0, 20.0)


def myDisplay():
    global piramid_a, piramid_b

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

    glTranslatef(0, 0, -7.0);
    glRotatef( piramid_a, 1.0, 0.0, 0.0 )
    glRotatef( piramid_b, 0.0, 1.0, 0.0 )
   

    glBegin(GL_QUADS)
    # Bagian alas segitiga atau piramida (y = -1.0)
    glColor3f(1.0, 1.0, 1.0);    
    glVertex3f( 1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f( 1.0, -1.0, -1.0);
    glEnd();
   
    glBegin(GL_TRIANGLES)
    # Bagian Depan Piramida (z = 1.0)
    glColor3f(1.0, 0.0, 1.0);    
    glVertex3f( 1.0, -1.0, 1.0);
    glVertex3f( -1.0, -1.0, 1.0);
    glVertex3f(0, 1.0, 0);

    # Bagian kiri piramida (x = -1.0)
    glColor3f(0.0, 0.5, 1.0);  
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(0, 1.0, 0);

    # Bagian Kanan piramida (x = 1.0)
    glColor3f(1.0, 0.0, 0.0);    
    glVertex3f( 1.0, -1.0, 1.0);
    glVertex3f( 1.0, -1.0, -1.0);
    glVertex3f(0, 1.0, 0);

    # Bagian Belakang piramida (z = -1.0)
    glColor3f(0.0, 0.0, 1.0);   
    glVertex3f( -1.0, -1.0,  -1.0);
    glVertex3f( 1.0, -1.0,  -1.0);
    glVertex3f(0, 1.0, 0);

    glEnd(); 
    glutSwapBuffers()
    glFlush()

#bagian piramida agar dapat diputar atau rotasi
def putar(key,x,y):
    global piramid_a, piramid_b

    if key == GLUT_KEY_RIGHT:
        piramid_a += 10
    elif key == GLUT_KEY_LEFT:
        piramid_a -= 10
    elif key == GLUT_KEY_UP:
        piramid_b += 10
    elif key == GLUT_KEY_DOWN:
        piramid_b -= 10

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)


def reshape(width, height):
   aspect = width / height;
   glViewport(0, 0, width, height);
   glMatrixMode(GL_PROJECTION); 
   glLoadIdentity();            
   gluPerspective(45.0, aspect, 0.1, 100.0);

def main():
    glutInit(sys.argv) # Initialize GLUT
    glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("PIRAMID 3D ANIMATION")
    glutSpecialFunc(putar)
    glutTimerFunc(50, update, 0)
    glutDisplayFunc(myDisplay)
    glutReshapeFunc(reshape)
    init()
    glutMainLoop()

main()


dan ini outputnya







di dalam source codenya sudah ada sedikit penjelasan dari kodenya. Sekian dari saya terima kasih
Share:

Tuesday, May 19, 2020

Membuat Event Heading serta tulisan dengn objek berbentuk P tidak sempurna menggunakan OpenGL

halo kawan-kawan, ksli ini saya berbagai ilmu lagi yaitu Membuat Event Heading serta tulisan dengn objek berbentuk P tidak sempurna menggunakan OpenGL.

berikut tools modul tambhan untuk membuatnya selain OpnGL,

pip install OpenGLContext
pip install PyVRML97
pip install pillow

berikut source codenya

from OpenGLContext import testingcontext
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

# Koordinat x dan y untuk posisi kotak
pos_x = 0
pos_y = 0

# Warna Kotak
merah = 0
hijau = 0
biru = 0

# Warna Teks
teks_merah = 1
teks_hijau = 1
teks_biru = 1

# Teks Warna Objek
warna_objek = "Hitam"

# Teks Warna Background
warna_background = "Hitam"


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 reshape(w, h):
    glViewport(0,0,w,h)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluOrtho2D(0,w,h,0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

def drawText():
    glColor3f(teks_merah,teks_hijau,teks_biru)
    drawBitmapText("Warna",-460,-350,0)
    drawBitmapText("Objek : " + warna_objek,-460,-400,0)
    drawBitmapText("Backgorund : " + warna_background ,-460,-450,0)
   
   

# Membuat P tidak sempurna
def kotak():
    global pos_x, pos_y
    glColor3f(merah,hijau,biru)
   
    glBegin(GL_LINE_STRIP)
 #koordinat membuat P tak sempurna
    glVertex2f(50 + pos_x,-250 + pos_y)

    glVertex2f(-50 + pos_x,-250 + pos_y)

    glVertex2f(-50 + pos_x,250 + pos_y)

    glVertex2f(250 + pos_x,250 + pos_y)

    glVertex2f(250 + pos_x,0 + pos_y)  

    glVertex2f(50 + pos_x,0 + pos_y)

    glVertex2f(50 + pos_x,-250 + pos_y)


    glEnd()


def display():
    glClear(GL_COLOR_BUFFER_BIT)

    drawText();

    glColor3f(1.0,1.0,1.0)
    glBegin(GL_LINES)
    glVertex2f(-500.0, 0.0)
    glVertex2f(500.0, 0.0)
    glVertex2f(0.0, 500.0)
    glVertex2f(0.0, -500.0)
    glEnd()


   
    glPushMatrix()
    kotak()
    glPopMatrix()



    glFlush()

def input_mouse(button, state, x, y):
    global merah, hijau, biru
    global warna_objek
   
    # Saat mengklik kanan warna kotak akan berubah menjadi warna hijau dan biru
    if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
        if hijau < 1:
            merah = 0
            hijau = 1
            biru = 0
            warna_objek = "Hijau"
        elif biru < 1:
            merah = 0
            hijau = 0
            biru = 1
            warna_objek = "Biru"
        print("Klik Kanan ditekan ", "(", x, ",", y, ")")
     # Saat mengklik kiri warna kotak akan berubah menjadi warna merah dan hitam
    elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
        if merah < 1:
            merah = 1
            hijau = 0
            biru = 0
            warna_objek = "Merah"
        else:
            merah = 0
            hijau = 0
            biru = 0
            warna_objek = "Hitam"
           
        print("Klik Kiri ditekan ", "(", x, ",", y, ")")

def input_keyboard(key,x,y):
    global pos_x, pos_y
    global warna_background
    global teks_merah, teks_hijau, teks_biru

    # Untuk mengubah posisi kotak

    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)

    # Untuk Mengubah Warna backgorund 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"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 0

    # 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"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 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"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1

    # 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"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1
       

   

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Tugas 9 Event Handling Mouse & keyboard, Font text")

    glutDisplayFunc(display)


    glutSpecialFunc(input_keyboard)
    glutMouseFunc(input_mouse)

    glutTimerFunc(50, update, 0)

   

    init()
    glutMainLoop()
   
main()

disana sudah ada penjelasan dari codenya
dan berikut adalah outputnya

 

 

 sekian dan terima kasih



Share:

Tuesday, May 12, 2020

Membuat event heading dengan tambahan karakter bitmap pada openGL

kali ini saya kembali lagi berbagi ilmu tentang membuat event heading di openGL dengan tambahan karakter bitmap, yaitu tambbahan berupa tulisan untuk bisa melakukannya openGL membutuhkan modul baru atau instal modul diantaranya

pip install OpenGLContext
pip install PyVRML97
pip install pillow

berikut adalah source codenya

from OpenGLContext import testingcontext
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

# Koordinat x dan y untuk posisi kotak
pos_x = 0
pos_y = 0

# Warna Kotak
merah = 0
hijau = 0
biru = 0

# Warna Teks
teks_merah = 1
teks_hijau = 1
teks_biru = 1

# Teks Warna Objek
warna_objek = "Hitam"

# Teks Warna Background
warna_background = "Hitam"


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 reshape(w, h):
    glViewport(0,0,w,h)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluOrtho2D(0,w,h,0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

def drawText():
    glColor3f(teks_merah,teks_hijau,teks_biru)
    drawBitmapText("Warna",-460,-350,0)
    drawBitmapText("Objek : " + warna_objek,-460,-400,0)
    drawBitmapText("Backgorund : " + warna_background ,-460,-450,0)
   
   

# Membuat bentuk kotak
def kotak():
    global pos_x, pos_y
    glColor3f(merah,hijau,biru)
   
    glBegin(GL_POLYGON)
    # 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()


def display():
    glClear(GL_COLOR_BUFFER_BIT)

    drawText();

    glColor3f(1.0,1.0,1.0)
    glBegin(GL_LINES)
    glVertex2f(-500.0, 0.0)
    glVertex2f(500.0, 0.0)
    glVertex2f(0.0, 500.0)
    glVertex2f(0.0, -500.0)
    glEnd()


   
    glPushMatrix()
    kotak()
    glPopMatrix()



    glFlush()

def input_mouse(button, state, x, y):
    global merah, hijau, biru
    global warna_objek
   
    # Saat mengklik kanan warna kotak akan berubah menjadi warna hijau dan biru
    if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
        if hijau < 1:
            merah = 0
            hijau = 1
            biru = 0
            warna_objek = "Hijau"
        elif biru < 1:
            merah = 0
            hijau = 0
            biru = 1
            warna_objek = "Biru"
        print("Klik Kanan ditekan ", "(", x, ",", y, ")")
     # Saat mengklik kiri warna kotak akan berubah menjadi warna merah dan hitam
    elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
        if merah < 1:
            merah = 1
            hijau = 0
            biru = 0
            warna_objek = "Merah"
        else:
            merah = 0
            hijau = 0
            biru = 0
            warna_objek = "Hitam"
           
        print("Klik Kiri ditekan ", "(", x, ",", y, ")")

def input_keyboard(key,x,y):
    global pos_x, pos_y
    global warna_background
    global teks_merah, teks_hijau, teks_biru

    # Untuk mengubah posisi kotak

    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)

    # Untuk Mengubah Warna backgorund 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"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 0

    # 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"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 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"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1

    # 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"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1
       

   

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Tugas 9 Event Handling Mouse & keyboard, Font text")

    glutDisplayFunc(display)


    glutSpecialFunc(input_keyboard)
    glutMouseFunc(input_mouse)

    glutTimerFunc(50, update, 0)

   

    init()
    glutMainLoop()
   
main()

dan ini oututnya





SDemikian sedikit ilmu dari saya terrima kasih











Share:

Wednesday, May 6, 2020

Membuat Event Heading dengan OpenGL

Halo kawan-kawan saya berniat berbagi ilmu lagi dengan kalian tentang Membuat Event Heading dengan OpenGL. sebelum kita mylai tentunya kita harus tau Event Heading itu apa. Event Heading adalah fungsi di OpenGL yang menyediakan fungsi yang didefinisikan oleh user dan dipanggil pada saat ada event yang bersesuaian. OpenGL memonitor peralatan input, ketika ada sesuatu yang terjadi, misalkan saat mouse down, keypress, dan lain-lain.
Berikut adalah souce codenya

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

# Koordinat x dan y untuk posisi kotak
pos_x = 0
pos_y = 0

# Warna Kotak
merah = 0
hijau = 0
biru = 0


def init():
    glClearColor(0.0, 0.0, 0.0, 1.0)
    gluOrtho2D(-500.0, 500.0, -500.0, 500.0)

def kotak():
    global pos_x, pos_y
    glColor3f(merah,hijau,biru)
   
    glBegin(GL_POLYGON)
    # kuadran 1
    glVertex2f(50 + pos_x,-50 + pos_y)
    # kuadran 2
    glVertex2f(-50 + pos_x,-50 + pos_y)
    # kuadran 3
    glVertex2f(-50 + pos_x,50 + pos_y)
    # kuadran 4
    glVertex2f(50 + pos_x,50 + pos_y)
    glEnd()


def display():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1.,1.0,1.0)
    glBegin(GL_LINES)
    glVertex2f(-500.0, 0.0)
    glVertex2f(500.0, 0.0)
    glVertex2f(0.0, 500.0)
    glVertex2f(0.0, -500.0)
    glEnd()

    glPushMatrix()
    kotak()
    glPopMatrix()


    glFlush()

def input_mouse(button, state, x, y):
    global merah, hijau, biru
    if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
        if hijau < 1:
            merah = 0
            hijau = 1
            biru = 0
        elif biru < 1:
            merah = 0
            hijau = 0
            biru = 1
        print("Klik Kanan ditekan ", "(", x, ",", y, ")")
    elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
        if merah < 1:
            merah = 1
            hijau = 0
            biru = 0
        else:
            merah = 0
            hijau = 0
            biru = 0
        print("Klik Kiri ditekan ", "(", x, ",", y, ")")

def input_keyboard(key,x,y):
    global pos_x, pos_y

    #disini algoritma untuk menentukan bachround tiap kuadran

       # Background kuadran 1 berubah warna menjadi Hijau
    if pos_x > 0 and pos_y > 0:
        glClearColor(0.0, 1.0, 0.0, 1.0)
       
    # Background kuadran 2 berubah warna menjadi Merah
    if pos_x < 0 and pos_y > 0:
        glClearColor(1.0, 0.0, 0.0, 1.0)

    # Background kuadran 3 berubah warna menjadi biru muda
    if pos_x < 0 and pos_y < 0:
        glClearColor(0.0,0.0,0.0,0.0)


    # Background kuadran 4 berubah warna menjadi Biru
    if pos_x > 0 and pos_y < 0:
        glClearColor(0.0,0.0,1.0,1.0)


#disini adalah algoritma untuk mengubah posisi kotak
    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)


   

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Event handling")
    glutDisplayFunc(display)

    glutSpecialFunc(input_keyboard)
    glutMouseFunc(input_mouse)

    glutTimerFunc(50, update, 0)

   

    init()
    glutMainLoop()
   
main()
 dan di situ telah terdapat beberapa penjelasan programnya

Berikut outputnya 
















Share:

Sunday, April 19, 2020

Menggambar Matahari dengan Perulangan Segitiga Menggunakan Phython OpenGL

Halo kawan-kawan kali saya akan berbagi ilmu lagi tentang menggambar matahari menggunakan python OpenGL berikut adalah ssource code dan sudah ada penjelasan dari source code nya


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)

def plotpoints():
    glColor3f(1.,1.0,0.) #untuk menentukan warna dari gambar
  
    for i in range(0,18): #for digunakan untuk membuat perulangan segitiga
        s = 20 #sudut kelipatan 20
        glRotatef(s, 0.0, 0.0,1.0) #membuat sudut rotasi
        segitiga()       

    glFlush()


def segitiga():#fungsi membuat segitiga

    glBegin(GL_TRIANGLES)#berfungsi untuk membuat bentuk segitiga
    glVertex2f(-50.0,0.0)
    glVertex2f(50.0,0.0)
    glVertex2f(0.0,200.0)
    glEnd()


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Matahari")
    glutDisplayFunc(plotpoints)

    init()
    glutMainLoop()
   
main()


dan ini adalah outpunya


 

berikut sedikit ilmu dari saya terimakasih.......
Share:

Tuesday, March 31, 2020

Gambar Objek Spiral berbentuk Hati menggunakan phython OpenGL

halo teman-teman kembali dengan saya, kali ini saya akan berbagi lagi informasi cara membuat gambar love pada phyton OpenGL. Berikut adalah syntaxnya. Pada syntax ini kita menggunakan library numpy karna numpy berfungsi untuk melakukan operasi vektor dan matriks dengan mengolah array dan array multidimensi.


from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

import numpy as np


def init():
    glClearColor(0.5, 0.5, 0.5, 0.0) #warna gambar background
    gluOrtho2D(-2.0, 2.0, -2.0, 2.0)


def plotpoints():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1, 1.0, 1.0) #warna garis
    glPointSize(13)
    glBegin(GL_LINES)
    glVertex2f(-500, 0)
    glVertex2f(500, 0)

    glVertex2f(0, -500)
    glVertex2f(0, 500)
    glEnd()
    heart_shape()
    glFlush()

def heart_shape(): #fungsi menggambar hati
    glBegin(GL_LINE_STRIP)
    glColor3f(1.0, 1.0, 1.0) #untuk menentukan warna dari gambar hati
    x = -1.140 #x memiliki nilai -1.140

    while(x <= 1.140): #selama x kurang dari sama dengan 1.140 maka akan melakukan looping
        delta = np.cbrt(x*x) * np.sqrt(x*x) - 4*x*x + 4 #dengan rumus delta = np.cbrt(x*x) * np.sqrt(x*x) - 4*x*x + 4
        y1 = (np.cbrt(x*x) + np.sqrt(delta)) / 2 #mencari y1
        y2 = (np.cbrt(x*x) - np.sqrt(delta)) / 2 #mencari y2
        
        glVertex2f(x, y1) #mendapat koordinat x dan y1
        glVertex2f(x, y2) #mendapat koordinat x dan y2

        x += 0.001 #x akan bertambah 0.001
    glEnd() #perulangan berakhir


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(500, 500)
    glutInitWindowPosition(100, 100)
    glutCreateWindow("Gambar Hati  Pertemuan 5")
    glutDisplayFunc(plotpoints)

    init()
    glutMainLoop()


main()
seperti biasa pada syntax sudah terdapat sedikit penjelasan programnya yang bisa membantu teman-teman. Sekian terima kasih

dan ini outputnya

Share:

Tuesday, March 24, 2020

Membuat lingkaran dengan menggunakan Algoritma Bressenham

Halo kawan-kawan sekalian, pada kesempatan kali ini saya akan membagikan pada kalian Membuat lingkaran dengan menggunakan Algoritma Bressenham. Algoritma Bressenham adalah algoritma
konversi penambahan nilai integer yang juga dapat diadaptasi untuk menggambar sebuah lingkaran. Berikut adalah source code programnya


from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *


def init():
    glClearColor(0.0, 0.0, 0.0, 0.0)
    gluOrtho2D(-100.0, 100.0, -100.0, 100.0)
    glPointSize(5)


def plot(x, y):
    glBegin(GL_POINTS)
    glVertex2f(x, y)
    glEnd()


def bresenham_circle_drawing(r):

    # fungsi untuk membuat lingksran

    x_position = 1
    y_position = 1

    r = 40 #adalah jari-jari yang ada pada lingkaran
    x = 0
    y = r

    # parameter keputusan
    d = 3 - 2 * r

 
    plot(x + x_position, y + y_position) #membuat koordinat titik

    while y > x:

        if d < 0:
            x += 1
            d += 4 * x + 6
        else:
            x += 1
            y -= 1
            d += (4 * (x - y)) + 10

        # Tidak perlu mencari semua nilai koordinat
        # cukup dapatkan nilai (x, y) saja
        # lalu balik menjadi (y, x)

        # Untuk pixel (x, y)

        # Quadrant 1
        plot(x + x_position, y + y_position)

        # Quadrant 2
        plot(x + x_position, -y + y_position)

        # Quadrant 3
        plot(-x + x_position, -y + y_position)

        # Quadrant 4
        plot(-x + x_position, y + y_position)

        # Untuk pixel (y, x)

        # Quadrant 1
        plot(y + x_position, x + y_position)

        # Quadrant 2
        plot(-y + x_position, x + y_position)

        # Quadrant 3
        plot(-y + x_position, -x + y_position)

        # Quadrant 4
        plot(y + x_position, -x + y_position)


def plotpoints():

    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(0.75, 0.6, 1.0) #UNTUK MENENTUKAN WARNA GARIS

    glBegin(GL_LINES)
#koordinat diagram x, y
    glVertex2f(-100, 0)
    glVertex2f(100, 0)

    glVertex2f(0, -100)
    glVertex2f(0, 100)

    glEnd()

    bresenham_circle_drawing(40)

    glFlush()


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(500, 500)
    glutInitWindowPosition(100, 100)
    glutCreateWindow("Bresenham Circle Drawing Algoritm")
    glutDisplayFunc(plotpoints)

    init()
    glutMainLoop()


main()
dalam program diatas sudah terdapat penjelasan dari program tersebut. Dan Output dari program tersebut adalah 


Demikian sedikt ilmu dari saya terimakasih atas kunjungan teman-teman sampai jumpa

Share:

Tuesday, March 10, 2020

Tutorial membuat rumah dengan OpenGL


Assalamualaikum kawan-kawan, kali ini saya akan beragi informasi membuay sebuah gambar rumah di OpenGL. Perlu diketehui untuk bisa mengerjakan prosesnya kita butuh tools yaitu Phyton dengan OpenGL sebagai librarynya. Dalam proses membuat kita menngunakan syntax glvortex 2f yang nantinya di dalanya ada deklarasi untuk mementukan titik koordinatnya. Berikut saya tampilkan syntax programnya

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
#import OpenGL


def init():
    glClearColor(0.0, 0.0, 0.0, 0.0) #tampilan warna dari background/kanvas
    gluOrtho2D(-100.0, 100.0, -100.0, 100.0) #koordinat maksimal dari sumbu x dan y

   
def plotlines():
    glClear(GL_COLOR_BUFFER_BIT)
#atap
    glColor3f(0.0, 1.0, 1.0) #untuk memberi warna pada garis
    glBegin(GL_LINES) #bentuk objek berupa line/garis
    glVertex2f(-100.0,20.0)
    glVertex2f(-80.0,70.0)
   
    glVertex2f(-80.0,70.0)
    glVertex2f(-23.0,70.0)

    glVertex2f(-23.0,70.0)  
    glVertex2f(-60.0,20.0)

    glVertex2f(-60.0,20.0)
    glVertex2f(-100.0,20.0)

    glVertex2f(-23.0,70.0)
    glVertex2f(0.0,100.0)

    glVertex2f(0.0,100.0)
    glVertex2f(23.0,70.0)
   
    glVertex2f(23.0,70.0)
    glVertex2f(80.0,70.0)
   
    glVertex2f(80.0,70.0)
    glVertex2f(100.0,20.0)
   
    glVertex2f(100.0,20.0)
    glVertex2f(60.0,20.0)
   
    glVertex2f(60.0,20.0)
    glVertex2f(23.0,70.0)
   
    glVertex2f(60.0,20.0)
    glVertex2f(-60.0,20.0)
   
    glVertex2f(-20.0,25.0)
    glVertex2f(-20.0,55.0)

    glVertex2f(-20.0,55.0)
    glVertex2f(20.0,55.0)

    glVertex2f(20.0,55.0)
    glVertex2f(20.0,25.0)

    glVertex2f(20.0,25.0)
    glVertex2f(-20.0,25.0)

    glVertex2f(-10.0,25.0)
    glVertex2f(-10.0,55.0)
   
    glVertex2f(10.0,25.0)
    glVertex2f(10.0,55.0)
   
    glVertex2f(-20.0,40.0)
    glVertex2f(-10.0,40.0)
   
    glVertex2f(10.0,40.0)
    glVertex2f(20.0,40.0)

   
    glVertex2f(-20.0,55.0)
    glVertex2f(-25.0,55.0)
   
    glVertex2f(-25.0,55.0)
    glVertex2f(-25.0,60.0)
   
    glVertex2f(-25.0,60.0)
    glVertex2f(-20.0,60.0)
   
    glVertex2f(-20.0,60.0)
    glVertex2f(-20.0,65.0)
   
    glVertex2f(-20.0,65.0)
    glVertex2f(20.0,65.0)
   
    glVertex2f(20.0,65.0)
    glVertex2f(20.0,60.0)
       
    glVertex2f(20.0,60.0)
    glVertex2f(25.0,60.0)
       
    glVertex2f(25.0,60.0)
    glVertex2f(25.0,55.0)
       
    glVertex2f(25.0,55.0)
    glVertex2f(20.0,55.0)

    glVertex2f(-20.0,60.0)
    glVertex2f(20.0,60.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk atap menggunakan tipe gl_line diatas


    glEnd()
    glFlush()
#badan
    glColor3f(0.0, 0.0, 1.0)
    glBegin(GL_LINES)
    glVertex2f(-90.0,20.0)
    glVertex2f(-90.0,-65.0)
   
    glVertex2f(-90.0,-65.0)
    glVertex2f(-95.0,-65.0)

    glVertex2f(-95.0,-65.0)
    glVertex2f(-95.0,-80.0)

    glVertex2f(-95.0,-80.0)
    glVertex2f(95.0,-80.0)

    glVertex2f(90.0,20.0)
    glVertex2f(90.0,-65.0)
   
    glVertex2f(90.0,-65.0)
    glVertex2f(95.0,-65.0)

    glVertex2f(95.0,-65.0)
    glVertex2f(95.0,-80.0)

    glVertex2f(95.0,-65.0)
    glVertex2f(-95.0,-65.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk badan rumah menggunakan tipe gl_line diatas

   
    glEnd()
    glFlush()

#tangga bawah
    glColor3f(0.0, 0.0, 1.0)
    glBegin(GL_LINES)
    glVertex2f(-40.0,-80.0)
    glVertex2f(-40.0,-75.0)

    glVertex2f(-40.0,-75.0)
    glVertex2f(-35.0,-75.0)

    glVertex2f(-35.0,-75.0)
    glVertex2f(-35.0,-70.0)

    glVertex2f(-35.0,-70.0)
    glVertex2f(-30.0,-70.0)
   
    glVertex2f(-30.0,-70.0)
    glVertex2f(-30.0,-65.0)

    glVertex2f(40.0,-80.0)
    glVertex2f(40.0,-75.0)

    glVertex2f(40.0,-75.0)
    glVertex2f(35.0,-75.0)

    glVertex2f(35.0,-75.0)
    glVertex2f(35.0,-70.0)

    glVertex2f(35.0,-70.0)
    glVertex2f(30.0,-70.0)
   
    glVertex2f(30.0,-70.0)
    glVertex2f(30.0,-65.0)

    glVertex2f(-40.0,-75.0)
    glVertex2f(40.0,-75.0)
   
    glVertex2f(-35.0,-70.0)
    glVertex2f(35.0,-70.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk tangga bawah menggunakan tipe gl_line diatas

  
    glEnd()
    glFlush()

#pintu
    glColor3f(0.0, 1.0, 0.0)
    glBegin(GL_LINES)
    glVertex2f(-20.0,-65.0)
    glVertex2f(-20.0,-10.0)

    glVertex2f(-20.0,-10.0)
    glVertex2f(-25.0,-10.0)
   
    glVertex2f(-25.0,-10.0)
    glVertex2f(-25.0,-5.0)
   
    glVertex2f(-25.0,-5.0)
    glVertex2f(-20.0,-5.0)
       
    glVertex2f(-20.0,-5.0)
    glVertex2f(-20.0,0.0)

    glVertex2f(-20.0,0.0)
    glVertex2f(20.0,0.0)
   
    glVertex2f(20.0,0.0)
    glVertex2f(20.0,-5.0)
   
    glVertex2f(20.0,-5.0)
    glVertex2f(25.0,-5.0)
       
    glVertex2f(25.0,-5.0)
    glVertex2f(25.0,-10.0)
       
    glVertex2f(25.0,-10.0)
    glVertex2f(20.0,-10.0)
       
    glVertex2f(20.0,-10.0)
    glVertex2f(20.0,-65.0)
       
    glVertex2f(-20.0,-5.0)
    glVertex2f(20.0,-5.0)
           
    glVertex2f(-20.0,-10.0)
    glVertex2f(20.0,-10.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk pntu menggunakan tipe gl_line diatas


    glEnd()
    glFlush()

#jendela kanan
    glColor3f(1.0, 0.0, 1.0)
    glBegin(GL_LINES)
    glVertex2f(40.0,0.0)
    glVertex2f(70.0,0.0)

    glVertex2f(70.0,0.0)
    glVertex2f(70.0,-30.0)
   
    glVertex2f(70.0,-30.0)
    glVertex2f(40.0,-30.0)
   
    glVertex2f(40.0,-30.0)
    glVertex2f(40.0,0.0)
   
    glVertex2f(50.0,0.0)
    glVertex2f(50.0,-30.0)
   
    glVertex2f(60.0,0.0)
    glVertex2f(60.0,-30.0)
   
    glVertex2f(40.0,-15.0)
    glVertex2f(50.0,-15.0)
   
    glVertex2f(60.0,-15.0)
    glVertex2f(70.0,-15.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk jendela kanan menggunakan tipe gl_line diatas

   
    glEnd()
    glFlush()

#jendela kiri
    glColor3f(1.0, 0.0, 1.0)
    glBegin(GL_LINES)
    glVertex2f(-40.0,0.0)
    glVertex2f(-70.0,0.0)

    glVertex2f(-70.0,0.0)
    glVertex2f(-70.0,-30.0)
   
    glVertex2f(-70.0,-30.0)
    glVertex2f(-40.0,-30.0)
   
    glVertex2f(-40.0,-30.0)
    glVertex2f(-40.0,0.0)
   
    glVertex2f(-50.0,0.0)
    glVertex2f(-50.0,-30.0)
   
    glVertex2f(-60.0,0.0)
    glVertex2f(-60.0,-30.0)
   
    glVertex2f(-40.0,-15.0)
    glVertex2f(-50.0,-15.0)
   
    glVertex2f(-60.0,-15.0)
    glVertex2f(-70.0,-15.0)
#glvortex ini berfungsi untuk memberi titik koordinat yang nantinya aksn disambung menjadi garis yang membentuk jendela kiri menggunakan tipe gl_line diatas

   
    glEnd()
    glFlush()
   
def main():
    glutInit(sys.argv) #inisiasi window
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB) #inisiasi window
    glutInitWindowSize(500,500) #ukuran window
    glutInitWindowPosition(100,100) #menetapkan posisi dari window
    glutCreateWindow("Plot Lines") #memberi nama projek
    glutDisplayFunc(plotlines) #mengerjakan semua fungsi

    init()
    glutMainLoop()
main()


berikut adalah output gambarnya



Pada syntax diatas sudah ada beberapa penjelasan dari setiap langkah, hanya saja penjelasan dari penetapan koordinat tidak saya jelaskan. Teman-teman bisa pelajari sendiri dengan membuat coretan di kertas untuk membantu dalam membayaangkan setiap koordinat.

Demikian adalah sedikit ilmu yang saya share ke teman-teman. Mohon maaf jika ada kesalahan dalam menyampaikan. Terima kasih...... Wassalamualaikum wr.wb.
Share:

Definition List

Unordered List

Support