Postingan

Segitiga 3D

Gambar
Berikut source code yang digunakan : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * piramida_1 = 0 piramida_2 = 0 def init (): glClearColor( 0.5 , 0.5 , 0.5 , 0.5 ) glEnable(GL_DEPTH_TEST) gluOrtho2D(- 20.0 , 20.0 , - 20.0 , 20.0 ) def myDisplay (): global piramida_1, piramida_2 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTranslatef( 0 , 0 , - 7.0 ) ; glRotatef( piramida_1, 1.0 , 0.0 , 0.0 ) glRotatef( piramida_2, 0.0 , 1.0 , 0.0 ) glBegin(GL_QUADS) # Bagian alas segitiga atau piramida (y = -1.0) glColor3f( 0.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 atau front face (z = 1.0) glColor3f( 1.0 , 0.0 , 0.5 ); glVertex3f( 1.0 , - 1.0 , 1.0 ) ; glVer...

Kuis

Source code : from random import randrange from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import numpy as np # Variable Kooridinat Posisi Kapal Selam pos_x = 0 pos_y = 0 # Variable Koordinat Posisi Kotak koor_x = 0 koor_y = 0 # Warna Kotak kt_red = 24 kt_green = 101 kt_blue = 164 # Warna Background bg_red = 24 bg_green = 101 bg_blue = 164 # Warna Teks teks_merah = 1 teks_hijau = 1 teks_biru = 1 # Teks Warna Objek teks_lampu = "OFF" # Rotation rotation = 1.0 # Zoom zoom_x = 1.0 zoom_y = 1.0 # Cahaya Lampu light_red = 50 light_green = 100 light_blue = 50 # Poin point = 0 def init (): glClearColor(convert_rgb(bg_red), convert_rgb(bg_green), convert_rgb(bg_blue), 1.0 ) gluOrtho2D(- 500.0 , 500.0 , - 500.0 , 500.0 ) # Fungsi ini digunakan untuk konversi nilai kode warna rgb menjadi format warna # pada PyopenGL def convert_rgb ( c ): return c /...

Event Handling Font & Text

Gambar
      Event handling ini merupakan penambahan materi pada postingan sebelumnya , dan berikut ini merupakan source code yang digunakan : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * pos_x = 0 pos_y = 0 merah = 0 hijau = 0 biru = 0 teks_merah = 1 teks_hijau = 1 teks_biru = 1 warna_objek = "Hitam" 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( "Colour" ,- 460 ,- 350 , 0 ) drawBitmapText( "Object : ...

Event Handling Mouse dan Keyboard

Gambar
Event Handling Mouse dan Keyboard Menggunakan PyOpenGL        OpenGL 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,key press,dan lain-lain. Berikut ini merupakan sebuah persegi empat yang dapat digerakan menggunakan tombol keyboard (keyup, keydown, keyright, key left), tombol mouse kiri dan kanan untuk merubah warna persegi empat, dimana pada saat persegi empat digerakan pada posisi tertentu warna background dapat berubah-ubah. Berikut sourcode yang digunakan : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * # Koordinat x dan y pos_x = 0 pos_y = 0 # Warna Kotak biru = 0 hijau = 0 merah = 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...
Gambar
MEMBUAT GAMBAR DARI GABUNGAN SEGITIGA Dalam artikel ini akan membahas bagaimana cara menggambar bentuk matahari menggunakan gabungan dari banyak segitiga dengan menggunakan bahasa pemrograman python. Berikut 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( 0.5 , 0.5 , 1.5 ) # warna biru for i in range ( 0 , 49 ): # membuat perulangan 0 - 18,segitiga terbentuk 49 kali s = 50 # dengan rotasi sudut kelipatan 50 glRotatef(s, 0.0 , 0.0 , 1.0 ) segitiga() glFlush() # Fungsi untuk menggambar bentuk segitiga def segitiga (): glBegin(GL_TRIANGLES) 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...

Membuat Gambar Hati menggunakan PyOpenGL

Gambar
Berikut merupakan source code untuk membuat gambar hati menggunakan PyOpenGL 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( 0 , 0.5 , 1.0 ) glPointSize( 13 ) glBegin(GL_LINES) glVertex2f(- 300 , 0 ) glVertex2f( 300 , 0 ) glVertex2f( 0 , - 300 ) glVertex2f( 0 , 300 ) 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...

ALGORITMA BRASENHAM CIRCLE

Gambar
ALGORITMA BRASENHAM CIRCLE        Algoritma bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh bresenham yang tidak kalah akurat dan efisien dengan algoritma primitif lainnya (seperti DDA). Bagian pengkonversian (scan-knversi) garis akan melakukan kalkulasi untuk penambahan nilai-nilai integer (yang dibutuhkan untuk membentuk garis) yang disesuaikan dengan tipe grafik yang dipakai oleh layar komputer (keadaan monitor pc) kita. Untuk mengilustrasikan pendekatan bresenham, pertama kita harus memperhatikan proses scan- konvensi untuk garis dengan slope positif yang lebih kecil dari 1. Posisi pixel sepanjang line-path kemudian ditentukan dengan penyamplingan pada unit interval x.dimulai dari endpoint kiri (Xo,Yo) dari garis yang diberikan, kita pindahkan beberapa kolom berturut-turut (berdasarkan posisi x) dan plot pixel-pixel yang mempunyai nilai scan-line y ke jarak yang paling dekat dengan line-path. Langkah umum  algoritma Bresenham yait...