Anda di halaman 1dari 7

UTS GRAFIKOM Pengisian Segi Empat

Disusun Oleh : Alda Alif Utama Logis Fanromik M. Arif Sefrianto (G1A010041) (G1A010043) (G1A010049)

Dosen Pembimbing : Drs. Boko Susilo, M.Si

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS BENGKULU


2012

TUJUAN
Mahasiswa dapat memahami kerja dari C++ Mahasiswa dapat memahamami menggunakan openGL Mahasiswa dapat memahami fungsi-fungsi dasar yang terdapat pada C++ Mahasiswa dapat memahami algoritma pengisian segi empat Mahasiswa dapat memahami source code yang digunakan untuk membuat pengisian segi empat

ALGORITMA
1. 2. 3. 4. 5. 6. Masukkan warna latar window (GL_COLOR_BUFFER_BIT) Masukkan border pada ketiga bangun datar segi empat Masukkan garis-garis pada ketiga bidang datar tersebut Masukkan ukuran window Masukkan posisi dari window Tentukan posisi titik dari persegi empat, dimana - Posisi = titik awal X, titik awal Y - Posisi = titik akhir X, titik awal Y - Posisi = titik akhir X, titik akhir Y - Posisi = titik awal X, titik akhir Y 7. Bila tipe sama dengan 1, maka - STARTEND = titik awal X - Titik awal X = titik awal Y - Titik awal Y = STARTEND - STARTEND = titik akhir X - titik akhir X = titik akhir Y - titik akhir Y = STARTEND 8. Hitunglah garis X dan garis Y Garis X = Garis Y =

9. Bila garis X < 0 , maka garis X dikali -1 10. Bila garis Y < 0, maka garis Y dikali -1 11. Inisialisasikan ulang titik awal untuk X dan Y - Temp X = titik awal X - Temp Y = titik awal Y 12. Selama pembagi > 1, lakukan - Bila tipe sama dengan 1, maka Temp X = Temp X garis X Temp Y = Temp Y garis Y Spesifikasikan garis sebagai primitif Posisi titik adalah titik awal Y , Temp X Posisi titik adalah Temp Y, titik akhir X - Sebaliknya, Temp X = Temp X + garis X Temp Y = Temp Y + garis Y Spesifikasikan garis sebagai primitif Posisi titik adalah Temp X, titik awal Y Posisi titik adalah titik akhir X , Temp Y Selama dilakukan perulangan, pembagi dilakukan pengurangan.

SOURCE CODE
#include <GL/glut.h> #include <stdlib.h>

int persegi; double GARIS, TEMP=0, STARTEND;

void BORDER(double X0, double Y0, double X1, double Y1) { glBegin(GL_LINE_LOOP); glVertex2f(X0 , Y0 ); glVertex2f(X1 glVertex2f(X1 , Y0 ); , Y1 );

glVertex2f(X0 , Y1); glEnd(); }

void LINES(int TIPE, double X0, double Y0, double X1, double Y1, double DIVIDE) { if (TIPE==1) { STARTEND = X0; X0 Y0 = Y0; = STARTEND;

STARTEND = X1; X1 Y1 } = Y1; = STARTEND;

GARIS=(X0-X1)/DIVIDE; if (GARIS<0) { GARIS=GARIS*-1; }

TEMP= X0; while (DIVIDE>1) {

if (TIPE==1) { TEMP= TEMP-GARIS; glBegin(GL_LINES); glVertex2f(Y0, TEMP); glVertex2f(Y1, TEMP ); glEnd(); } else { TEMP= TEMP+GARIS; glBegin(GL_LINES); glVertex2f(TEMP , Y0); glVertex2f(TEMP , Y1); glEnd(); } DIVIDE--; } }

void mydisplay(){ glClear(GL_COLOR_BUFFER_BIT); BORDER(-0.9, 0.9, BORDER( 0.1, 0.9, BORDER( -0.4, -0.1, -0.1, 0.1); 0.9, 0.1); 0.4, -0.9);

//GARIS seig empat 1 LINES(0, -0.9, 0.9, //GARIS segi empat 2 LINES(1, 0.1, 0.9, 0.9, 0.1, 8); -0.1, 0.1, 8);

//GARIS segi empat 3 LINES(0, -0.4, -0.1, LINES(1, -0.4, -0.1, 0.4, -0.9, 8); 0.4, -0.9, 8);

glFlush();

} int main(int argc, char** argv){ glutInitWindowSize(500,500); glutInitWindowPosition(200,200); glutCreateWindow("simple"); glutDisplayFunc(mydisplay); glutMainLoop(); }

OUTPUT

Anda mungkin juga menyukai