Sabtu, 28 Mei 2016

OpenGL - Rumah Sederhana 2D (C++)




Download C++ Source Code 

Untuk membuat gambar seperti itu pada dasarnya hanya menggunakan 2 fungsi dasar yaitu

glBegin(GL_POLYGON);
     glVertex2i(x, y);    
glEnd();

dan

 glBegin(GL_LINE_LOOP);
     glVertex2i(x, y);    
 glEnd();

Line_Loop digunakan untuk membuat garis-garis.
Polygon digunakan untuk membuat bidang.

Line_Loop dan Polygon menggunakan sistem koordinat x,y atau kartesius dimana titik nol ada di pojok kiri bawah frame.
Setiap bidang yang dibentuk menggunakan fungsi GL_POLYGON hanya bisa menampung 1 warna, sehingga bila kita ingin warna yang berbeda, kita harus membuat bidang yang baru lagi.

Untuk memberi warna, yang kita gunakan adalah

 glColor3f(0.0, 0.0, 0.0);

Dalam glColor, yang kita atur adalah intensitas warna Red, Green, dan Blue (RGB). Setiap intensitas warna dipisahkan menggunakan tanda koma(,) . Perpaduan warna RGB contohnya:

glColor3f(0.0f,1.0f,1.0f); --> Cyan
glColor3f(1.0f,0.6f,0.0f); --> Orang
glColor3f(1.0f,0.4f,0.0f); --> Coklat
glColor3f(0.7f,1.0f,0.7f); --> Abu-abu

Dari fungsi-fungsi itu bisa kita bentuk gambar 2D, salah satunya gambar rumah..  

OpenGL - Hexagonal (C++)




Source Code

Untuk membuat hexagonal, kita harus lakukan adalah menentukan koordinat titik titik yang membentuk segi enam.
Koordinat titik itu dapat dicari dengan rumus 

Jadi pertama, kita mencari 6 koordinat titik terluar. Lalu setelah ketemu koordinat setiap titik, dilakukan perulangan yang sama seperti saat menacari koordinat titik terluar, tapi untuk setiap perulangan, nilai R atau jari-jari dari hexagonal dikurangi.  

Setelah dilakukan perulangan, akan didapat koordinat dari banyak titik. Agar membentuk hexagonal yang kita gunakan adalah GL_LINE_STRIP, agar setiap titik dapat terhubung kecuali titik terluar dan titik terdalam.

Setelah itu baru diwarnai, untuk mewarnai agar diperoleh warna yang berbeda, setiap dilakukan perulangan, intensitas warna diubah dengan mengubah nilai RGB , bisa dikurangi atau ditambah. Perubahan yang signifikan pada nilai RGB akan mengubah warna pada hexagonal yang selanjutnya menjadi putih atau hitam, tapi kalu terlalu sedikit perubahan warna tidak terlalu terlihat. Maka digunakan permisalan saat merubah warna, jadi saat mencapai diagonal tertentu perintah untuk merubah warna akan berubah.  

OpenGL - Klipping (Perpotongan)

Perpotongan 2 garis, yang perlu dilakukan adalah memasukan rumus perpotongan sesuai dengan matematika ke dalam opengl. 
Hanya perlu sedikit perubahan, triknya adalah memasukan lebih dulu rumus terakhir untuk menentukan titik potong dalam matematika.

Misalkan pada gambar di atas, garis hijau adalah 'ab' dan garis biru adalah 'cd', 
Setiap titik punya koordinat masing masing a(xa,ya), b(xb,yb), c(xc,yc), d(xd,yd) 

Untuk menentukan nilai x dari titik potong menggunakan rumus
x  = ccd - cab / mab –mcd

Untuk mengetahui nilai x, ada 4 nilai yang harus diketahui, rumusnya :
mab = (yb-ya)/(xb-xa);
mcd = (yd-yc)/(xd-xc);
cab = ya - (mab*xa);
ccd = yc - (mcd*xc);

Setelah mendapat nilai x, untuk mencari nilai y tinggal menggunakan salah satu dari 4 rumus diatas.
Kita sudah punya nilai x dan y dari titik potong, tinggal dicetak pakai GL_POINTS 

Selesai..