Anda di halaman 1dari 9

39

KEGIATAN BELAJAR 4
PRIMITIF OBJEK GEOMETRI II

Indikator
Mahasiswa mampu:
a. Memahami algoritma penggambaran segiempat
b. Memahami algoritma penggambaran segitiga
c. Memahami algoritma penggambaran segienam
d. Menggunakan reshape callback function

Uraian Materi
A. Algoritma Penggambaran Segiempat
Segiempat adalah suatu segi banyak (polygon) yang memiliki empat sisi dan
empat sudut. Segiempat adalah salah satu bentuk dasar dalam geometri yang paling
popular pada primitive object dapat digunakan untuk membuat segiempat, setiap
sudut dalam bangun polygon diberi nama dengan satu huruf. Sebuah bangun
segiempat diberi nama berdasarkan nama titik-titik sudutnya. Sebuah segi empat
yang memiliki sudut A, B, C, dan D dinamakan segi empat ABCD. Untuk memulai
membuat bentuk segiempat, kita harus mengiinisialisasikan terlebih dulu titik-titik
koordinatnya yang terdiri dari 4 titik Contohnya:

Gambar 4.1 Koordinat Segiempat


40

glBegin (GL_QUADS);
glVertex2f (-0.5, -0.5);
glVertex2f (-0.5, 0.5);
glVertex2f (0.5, 0.5);
glVertex2f (0.5, -0.5);
glEnd();

B. Algoritma Penggambaran Segitiga


Segitiga atau segi tiga (bahasa Inggris: triangle) adalah nama suatu bentuk
yang dibuat dari tiga sisi yang berupa garis lurus dan tiga sudut. Untuk memulai
membuat bentuk segitiga, kita harus mengiinisialisasikan terlebih dulu titik-titik
koordinatnya yang terdiri dari 3 titik. Dideklarasikan dengan fungsi
GL_TRIANGLES Contohnya:

Gambar 4.2 Koordinat Segitiga

glBegin (GL_TRIANGLES);
glVertex2f (-0.5, -0.5);
glVertex2f (0.0, 0.0);
glVertex2f (0.5, -0.5);
glEnd();

C. Algoritma Penggambaran Segienam


Segienam adalah sebuah segi banyak yang memiliki enam sisi dan
sudut. Segienam biasa memiliki enam sisi dan sudut yang sama dan terdiri dari
enam buah segitiga sama sisi. Ada berbagai macam cara untuk menghitung luas
sebuah segienam, entah itusegienam beraturan atau segienam tak beraturan. Untuk
41

memulai membuat bentuk segienam, kita harus mengiinisialisasikan terlebih dulu


titik-titik koordinatnya yang terdiri dari 6 titik. Contohnya:

Gambar 4.3 Koordinat Segienam

glBegin (GL_POLYGON);
glVertex2f (-0.4, -0.2);
glVertex2f (-0.2, 0.4);
glVertex2f (0.2, 0.4);
glVertex2f (0.2, 0.4);
glVertex2f (-0.2, 0.0);
glVertex2f (-0.2, 0.0);
glEnd();

D. Reshape Callback Function


Jika kita drag ujung windows sehingga window tidak lagi berupa
bujursangkar, bujursangkar-nya juga berubah bentuk. Gambar berikut
mengilustrasikan situasinya.

Gambar 4.4 Ilustrasi Reshape Callback


42

Agar gambar tetap berada pada proporsi yang tepat, maka perlu digunakan
callback reshape yang dipanggil setiap kali window berubah ukuran. Untuk itu
perlu lakukan perintah berikut:

void resize( int w, int h )


{
if (w >= h)
glViewport(0, 0, (GLsizei)h, (GLsizei)h) ;
else
glViewport(0, 0, (GLsizei)w, (GLsizei)w) ;
}
Setelah membuat fungsi resize, paggil fungsi reshape pada fungsi main
dengan perintah berikut:
glutReshapeFunc(resize);

Hasilnya diilustrasikan pada gambar berikut:

Gambar 4.5 Hasil Ilustrasi Reshape

glViewport(X, Y, Width, Height) bertanggung jawab untuk melakukan


setting viewport dari suatu window, yaitu bagian dari window yang digunakan
untuk menggambar. Selain setting glViewport() biasanya Reshape callback
function juga digunakan untuk mengatur Transformasi Proyeksi.
43

E. PRATIKUM
1. Atur project OpenGL di aplikasi Dev C++. Kemudian beri nama project:
Pratikum 4
2. Selanjutnya pada window main.cpp, tuliskan program berikut:

#include <GL/glut.h>

void garis(){
glColor3f(0.0,1.0,1.0);
glBegin (GL_QUADS);
glVertex2f (-0.5, -0.5);
glVertex2f (-0.5, 0.5);
glVertex2f (0.5, 0.5);
glVertex2f (0.5, -0.5);
glEnd();

glColor3f(1.0,0.0,1.0);
glBegin (GL_TRIANGLES);
glVertex2f (-0.5, -0.5);
glVertex2f (0.0, 0.0);
glVertex2f (0.5, -0.5);
glEnd();

glColor3f(0.0,0.0,1.0);
glBegin (GL_POLYGON);
glVertex2f (-0.2, 0);
glVertex2f (-0.4, 0.2);
glVertex2f (-0.2, 0.4);
glVertex2f (0.2, 0.4);
glVertex2f (0.4, 0.2);
glVertex2f (0.2, 0);
glEnd();
}
void resize( int w, int h ){
if (w >= h)
glViewport(0, 0, (GLsizei)h, (GLsizei)h) ;
else
glViewport(0, 0, (GLsizei)w, (GLsizei)w) ;
}
44

void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
garis();
glutSwapBuffers();
}
int main(int argc,char** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
glutCreateWindow("pratikum 4");
glClearColor(1.0,1.0,1.0,1.0);
gluOrtho2D(-1.,1.,-1.,1.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMainLoop();
return 0;
}

3. Selanjutnya compile and run program dengan menekan tombol “F11” pada
keyboard. Atau dengan mengklik tool “Compile & Run”.

Gambar 4.6 Compile & Run


45

4. Hasilnya akan seperti pada gambar berikut

Gambar 4.7 Hasil Algoritma segiempat, segitiga, dan segienam

5. Print Screen syntsks dan hasilnya dan copy ke word document


46

Video Tutorial Pratikum 4

Rangkuman

Segiempat adalah salah satu bentuk dasar dalam geometri yang paling popular
pada primitive object dapat digunakan untuk membuat segiempat, setiap sudut
dalam bangun polygon diberi nama dengan satu huruf. Sebuah segi empat yang
memiliki sudut A, B, C, dan D dinamakan segi empat ABCD.

Segitiga atau segi tiga (bahasa Inggris: triangle) adalah nama suatu bentuk
yang dibuat dari tiga sisi yang berupa garis lurus dan tiga sudut. Dalam
pembentukan segitiga, terlebih dulu untuk mengiinisialisasikan titik-titik
koordinatnya yang terdiri dari 3 titik A, B, C.

Segienam adalah sebuah segi banyak yang memiliki enam sisi dan
sudut. Segienam biasa memiliki enam sisi dan sudut yang sama dan terdiri dari
enam buah segitiga sama sisi.
47

Evaluasi

1. Jelaskan definisi dari primitive objek geometri dari:


a. Segiempat
b. Segitiga
c. Segienam
2. Gambarkan koordinar primitive objek geometri dari:
a. Segiempat
b. Segitiga
c. Segienam

Tugas

1. Buatlah sebuah projek baru pada Dev C++ dengan nama Praktikum 4
Segiempat. Gambarkan 2 segiempat, 1 segitiga, 1 segienam dengan nilai
koordinat dan warna sesuai kreatifitas masing masing!
2. Tambahkan algoritma

void resize( int w, int h ){


if (w >= h)
glViewport(0, 0, (GLsizei)h, (GLsizei)h) ;
else
glViewport(0, 0, (GLsizei)w, (GLsizei)w) ;
}
Pada sola nomor 1.
3. Buatlah laporan praktikum pada soal 1 dan 2 dengan judul Praktikum 4
Primitif Objek Geometri II!

Umpan Balik dan Tindak Lanjut

Setelah mempelajari dan memahami primitive objek geometri II maka


mahasiswa diharapkan telah memiliki modal awal dalam proses pembelajaran pada
mata kuliah komputer grafis. Selanjutnya mahasiswa dipersilahkan mempelajari
Algoritma Pembentuk Objek sebagaimana pada materi pokok 5 berikut.

Anda mungkin juga menyukai