ALGORITMA PERPOTONGAN OBJEK

dokumen-dokumen yang mirip
PEMBENTUKAN TRANSFORMASI OBJEK 2 DIMENSI DENGAN OPENGL

Grafik Komputer : KLIPING

Contoh Teknik Clipping

GRAFIK KOMPUTER DAN PENGOLAHAN CITRA. WAHYU PRATAMA, S.Kom., MMSI.

UJIAN TENGAH SEMESTER. Contoh Teknik Clipping. Clipping. Sesi 09 CLIPPING. Dosen Pembina : Sriyani Violina Danang Junaedi

Viewing and Clipping 2D. Farah Zakiyah Rahmanti 2014

Pewarnaan dan Perputaran Polygon Untuk Objek Gambar Segi Tiga dan Segi Empat Menggunakan Program OPENGL 32

BAB IV TOOLS UNTUK MENGGAMBAR (WINDOW DAN VIEWPORT)

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

BAB VI Clipping. OBJEKTIF : Pada Bab ini mahasiswa mempelajari tentang : 1. Operasi Clippling 2. Antialiasing

Tampilan 2 Dimensi. Clipping 2 Dimensi. Tampilan 2 Dimensi. Penggambaran 2 Dimensi. Clipping 2 Dimensi. Ketampakan Garis 10/20/2017

Window /jendela area koordinat yg digunakan untuk menampilkan gambar Viewport area koordinat dimana suatu window dimapping

LAMPIRAN SOURCE CODE

BAB II LINGKUNGAN PEMROGRAMAN GRAFIK DENGAN OPEN GL

Pembahasan berikut ini adalah berkaitan dengan sejumlah teknik pemotongan primitif berdasarkan metoda analitis di atas.

Tutorial 04 Modeling & Transformasi Proyeksi

BAB IV IMPLEMENTASI DAN PENGUJIAN

Gambar 1. Viewport pada layar

DAFTAR PUSTAKA. (diakses 1 maret 2016)

Tutorial 09. Lighting

apa yang terjadi?. Kemudian lakukan pengantian beberapa bagian seperti sintak

Gambar 1. Viewport pada layar

PETEMUAN KE-5 TRANSFORMASI-PANDANGAN (Viewing)

PETEMUAN KE-3 PRIMITIVE DRAWING 2

Tabel 1 Perintah-perintah OpenGL yang telah dipraktekan

Clipping. Grafika Komputer. Murinto, M.Kom

J U R N A L I L M I A H KOMPUTASI

Pengenalan OpenGL. Sintax Perintah OpenGL. Library yang Berhubungan dengan OpenGL

Tutorial 06. Texture Mapping & Blending

Proses Clipping Menggunakan Algoritma Cohen-Sutherland pada Ruang Dimensi Tiga

IMPLEMENTASI OPEN GL32 UNTUK MEMANIPULASI GAMBAR SEGITIGA DAN SEGIEMPAT

Pengenalan OpenGL. Sintax Perintah OpenGL. Library yang Berhubungan dengan OpenGL

Tabel 1 Perintah-perintah OpenGL yang telah dipraktekan

Grafika Komputer Pertemuan Ke-9

Kata Kunci: computer adaptive test, adaptive learning, algoritma cohen-sutherland

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

GRAFIK KOMPUTER & PENGOLAHAN CITRA

Tutorial 08. Fog. mensimulasikan efek kabut membatasi ruang pandang pengguna agar komputasi grafis yang diperlukan dapat dibatasi.

ANALISA TEKNIK CUBE MAPPING BERBASIS OPENGL

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

OPENGL DALAM MICROSOFT VISUAL STUDIO EXPRESS Created by: Gideon

Grafika Komputer. Evangs Mailoa

Topik bahasan: 1. Membuat objek mudah dan kompleks dengan jaring poligon 2. Merender jaring poligon sebagai wireframe dan atau pejal dengan OpenGL

DIAN PRATIWI. ST, MTI

PRIMITIVE DRAWING. Achmad Basuki Nana Ramadijanti

Program 1 /* Menampilkan Bayangan sebuah obyek sumber file */

PAGI. SOAL PILIHAN GANDA : No

Primitive Drawing. Achmad Basuki Nana Ramadijanti

Pada komputer grafik ada 3 macam sistem koordinat yang harus di perhatikan :

Bab 2 Output Primitif

/*Bismillahirrohmanirrohim _Fatimah_Rombel 2_Projek_Akhir_Komgraf*/ #include <stdio.h> #include <stdlib.h> #include <string.

BAB 3 ANALISIS DAN PERANCANGAN

Jawab: Titik awal (x 1, y 1 ) = A(2,1) dan Titik akhir (x 2, y 2 ) = B(8,5) dx = x 2 x 1 = 8 2 = 6 dan dy = y 2 y 1 = 5 1 = 4

Saat ini saya di minta untuk membuat garis vertikal, horizontal dan diagonal dengan OpenGL.

BAB I PENDAHULUAN. 1.1.Latar Belakang

BAB 3 PERANCANGAN DAN PEMBUATAN. Engine akan dirancang agar memenuhi syarat maintainability, reusability dan

PENGANTAR GRAFIKA KOMPUTER

Menjelaskan materi transformasi koordinat global ke layat dsbl. Mendemokan contog grafis di PHP

Pemotongan Poligon Menggunakan Algoritma Weiler Atherton

Perulangan, Percabangan, dan Studi Kasus

TUGAS PROGRAM DIAGONAL, VETIKAL, DAN HORIZONTAL OPENGL (MENGGUNAKAN JAVA) NAMA : SYIFA MUTIARA SARI KELAS : 3KA23 NPM :

LAPORAN PRATIKUM KOMPUTER APLIKASI

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

Bab 3. Decision 1 (Pengambilan Keputusan)

Grafika Komputer. Evangs Mailoa

3. Jika y1 = y2 (garis horisontal), maka (a) x = x + 1 dan y tetap (b) gambar titik (x,y) di layar (c) Selesai

BAB 4 HASIL DAN PEMBAHASAN

SILABUS MATAKULIAH. Indikator Pokok Bahasan Aktifitas Pembelajaran

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

BAB III OUTPUT PRIMITIF

Grafik Komputer : Konsep 3 Dimensi

BAB 3 PERANCANGAN SISTEM

Modul. Grafika Komputer. Disusun Oleh: Maya Amelia

GRAFIK KOMPUTER DAN PENGOLAHAN CITRA. WAHYU PRATAMA, S.Kom., MMSI.

10/10/2017. Teknologi Display SISTEM KOORDINAT DAN BENTUK DASAR GEOMETRI (OUTPUT PRIMITIF) CRT CRT. Raster Scan Display

Pemrograman Dasar C. Minggu 3

KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B)

BAB 3 PE GEMBA GA METODE DA ALGORITMA PEMESI A MULTI AXIS

LATIHAN UTS Tim Pengajar KU1071 Sem

BAB 2 DASAR TEORI. Pada bagian ini akan dibahas tentang teori dasar dari grafika komputer, yang

PENGANTAR KOMPUTER & SOFTWARE II

5 Patahan. Gambar 5-1: Jenis patahan

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

PERSAMAAN DAN FUNGSI KUADRAT

Bab 3 Algoritma Feature Pengurangan

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

MATERI TIK KELAS 5 SEMESTER 1 SD KATOLIK SANTA MARIA MAGELANG

BAB 4 IMPLEMENTASI DAN EVALUASI. 4.1 Spesifikasi Perangkat Keras dan Pera ngkat Lunak. program aplikasi dengan baik adalah sebagai berikut:

BAB IV ANALISA DAN PEMBAHASAN. Pengujian sistem elektronik terdiri dari dua bagian yaitu: - Pengujian tegangan catu daya - Pengujian kartu AVR USB8535

TRANSFORMASI. Tujuan transfomasi adalah:

Studi Digital Watermarking Citra Bitmap dalam Mode Warna Hue Saturation Lightness

Bab 1 Pengenalan GLUT

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. STMIK AKAKOM Yogyakarta membuat aplikasi yang berjudul Aplikasi

II. DASAR TEORI I. PENDAHULUAN

Pengantar Grafika Komputer

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

TUGAS PENGANTAR GRAFIK KOMPUTER DAN OLAH CITRA

Fungsi : Dasar Fungsi

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Transkripsi:

ALGORITMA PERPOTONGAN OBJEK Ina Agustina, Fauziah Jurusan Sistem Informasi, Fakultas Teknologi Komunikasi dan Informatika, Universitas Nasional Jl. Sawo Manila, Pejaten Pasar Minggu No.61, Jakarta 12520 E-mail ict@unas.ac.id ABSTRAK Grafika komputer adalah gambar atau grafik yang dihasilkan oleh computer yang merupakan sekumpulan alat yang digunakan utnuk membuuat gambar dan berinteraksi dengan gambar dengan cara-cara yang biasa digunakan. Secara umum program-program computer grafis ditujukan untuk memudahkan interaksi antara manusia dengan komputer. Pada makalah ini akan dijelaskan tentang kliping yaitu kliping titik, garis dan kliping polygon Keyword : Algoritma perpotongan objek, kliping titik, kliping garis dan kliping polygon Latar Belakang masalah I. PENDAHULUAN Latar belakang dibuatnya makalah ini adalah untuk melengkapi niai tugas semester lima grafika komputer selain itu makalah ini dibuat untuk memperjelas bentuk-bentuk kliping yaitu kliping garis dan kliping polygon. II. LANDASAN TEORI Kliping adalah pemotongan suatu objek dengan bentuk tertentu. Alasan dilakukannya kliping : 1. Menghindari perhitungan koordinat pixel yang rumit (karenanya kliping dilakukan sebelum rasterisasi). 2. Interpolasi parameter Sarana pemotong objek disebut jendela kliping. Fungsi jendela kliping adalah untuk mengidentifikasi objek yang akan di-clipping dan memastikan bahwa data yang diambil hanya yang terletak di dalam jendela clipping. Bentuk jendela kliping : 1. Segi empat, segi tiga 2. Lingkaran atau ellips 3. Polygon dan lain-lain. 1. Kliping Titik 72

Untuk menentukan letak suatu titik di dalam jendela kliping, digunakan ketentuan : Xmin <= X <= Xmax dan Ymin <= Y <= Ymax. Pada gambar di atas, terdapat sebuah jendela kliping dengan parameter sebagai berikut : Xmin -batas minimum sumbu X Xmax -batas maksimum sumbu X Ymin -batas minimum sumbu Y Ymax -batas maksimum sumbu Y Terdapat w2 buah titik P1(x,y) dan P2(x,y) dengan : P1 terletak di dalam jendela kliping karena P1.x < Xmax dan P1.x > Xmin serta P1.y < Ymax dan P1.y > Ymin P2 terletak di dalam jendela kliping,karena P2.x < Xmin walaupun P2.x < Xmax P2.y < Ymax dan P2.y > Ymin. 2. Kliping Garis Kliping sebuah garis P1 dan P2 dengan jendela L, R, T, dan B akan berhubungan dengan garis yang terletak di dalam jendela dan garis di luar jendela. Garis yang berada di dalam jendela adalah garis yang akan ditampilkan (P1 P2 ), sedangkan garis yang terletak di luar jendela dibuat tidak tampak (P1 P1 dan P2 P2 ) 73

Untuk menentukan letak sebuah garis di dalam jendela kliping dilakukan analisis letak titik yang menentukan garis tersebut dan memastikan bahwa titik-titik tersebut berada di dalam jendela kliping. Kondisi garis terhadap jendela kliping : 1. Invisible : Tidak kelihatan, terletak di luar jendela kliping 2. Visible: Terletak di dalm jendela kliping 3. Halfpartial: Terpotong sebagian oleh jendela kliping, bisa hanya dnegan bagian atas, bawah, kiri atau kanan 4. Vollpartial: Terpotong penuh oleh jendela kliping. Garis melintasi jendela kliping Algoritma Umum Kliping : 74

Kliping Garis Cohen-Sutherland Hubungan antara sebuah garis dengan jendela kliping dapat ditulis seperti hubungan antara titik awal dan titik akhir sebuah garis dengan jendela kliping P1(x,y) dan P2(x,y) W(L,R,T,B). Untuk menentukan relasi tersebut diperlukan suatu struktur data pembantu yang disebut pointcode. Dengan pointcode kita dapat mengidentifikasi posisi titik terhadap jendela kliping. Nilai untuk pointcode l, r, t dan b adalah 1dan 0 yang merupakan nilai logika yang dapat dimengerti dengan nilai true dan false. Suatu titik yang visible berarti titik tersebut terletak di dalam jendela kliping, dan invisible jika terletak di luar jendela kliping. Suatu titik itu visible dengan pointcode jika nilai l, r, t dan b adalah nol, artinya jika salah satu nilai dari l, r, t dan b tidak sama degan nol maka dapat diketahui bahwa titik tersebut terletak di luar jendela kliping dan diketahui pada posisi mana. Berdasarkan urutan kode, pointcode ditentukan : 75

Titik terletak di dalam jendela kliping jika jumlah keempat pointcode adalah nol :L + R + T + B = 0. Titik terletak di luar jendela kliping jika jumlah keempat pointcode lebih besar dari nol. L + R + T + B > 0. Visibilitas suatu garis tergantung dari pointcode pada kedua titik yang membentuk garis tersebut, yaitu P1 dan P2. Jika P1 dan P2 di dalam jendela kliping maka garis adalah visible. Jika salah satu dari titik P1 atau P2 di uar jendela kliping, artinya garis adalah halfpartial. Jika titik P1 dan P2 di luar jendela kliping, artinya garis adalah invisible. Jika P1 dan P2 melintasi jendela kliping, artinya garis adalah vollpartial. Algoritma Kliping Cohen-Sutherland : 1.Tentukan regioncode dari setiap endpoint 2.Jika kedua endpoint memiliki regioncode 0000, maka garis berada di dalam jendela kliping. Gambar garis tersebut 3.Jika tidak, lakukan operasi logika AND untuk kedua regioncode 3.1. Jika hasilnya 0000, maka buang garis tersebut (tolak) 3.2 Jika tidak (hasilnya 000), maka dibutuhkan kliping 3.2.1. Pilih salah satu endpoint yang berada di luar jendela kliping 3.2.2. Cari titik persinggungan pada batas jendela (berdasarkan regioncode) 3.2.3. Ganti endpoint dengan titik persinggungan dan update regioncode 3.2.4. Ulangi langkah 2 hingga diperoleh garis klipping yang diterima dan yang ditolak 76

4. Ulangi langkah 2 untuk garis yang lain. Daerah titik persinggungan dapat dilihat dari nilai bit : Jika bit 1 = 1, titik persinggungan ada di atas. Jika bit 2 = 1, titik persinggungan ada di bawah. Jika bit 3 = 1, titik persinggungan ada di kanan. Jika bit 4 = 1, titik persinggungan ada di kiri. Titik persinggungan dapat dicari dengan persamaan garis : * Persinggungan antara batas KIRI dan KANAN x = xwmin (LEFT) x = xwmax (RIGHT) y = y1 + m(x x1) * Persinggungan antara batas ATAS dan BAWAH y = ywmin (BOTTOM) y = ywmax (TOP) x = x1 + (y y1)/m 77

78

3. Kliping Poligon Kliping Poligon Sutherland-Hodgeman Kliping poligon lebih kompleks dibandingkan kliping garis : Input: polygon. Output: poligon asli, poligon baru, atau lainnya. Contoh : Apa yang terjadi apabila pada suatusegitiga dilakukan kliping? Kemungkinan hasilnya : Ide Dasar Kliping Poligon : Perhatikan setiap edge pada setiap arah pandang. Klip/potong poligon dengan persamaan edge. Lakukan pada semua edge, hingga poligon tersebut secara penuh ter-klip/terpotong. 79

80

ALGORITMA / PROGRAM 1. Perpotongan Garis dan Garis #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glfw.h> #include <math.h> void mulaiopengl(void); int main(void) III. PEMBAHASAN mrunning = TRUE, aplikasi masih berjalan mrunning = FALSE,??? :p GLuint mrunning = GL_TRUE; inisialisasi GLFW if( glfwinit() == GL_FALSE ) MessageBox( NULL, "ERROR :: gagal menginisialisasi GLFW", "Error!", MB_OK); return(0); buat sebuah window yang akan digunakan untuk menggambar. if( glfwopenwindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE ) 81

MB_OK ); MessageBox( NULL, "ERROR :: gagal membuat window", "Error!", glfwterminate(); return(0); Set judul yang ada di window dan Swap interval. glfwsetwindowtitle( "Praktikum Grafik Komputer LabTI" ); glfwswapinterval( 1 ); mulai OpenGL (melakukan setting awal OpenGL) mulaiopengl(); float Pos_X, Pos_Y, Pos_Z; float Sudut_Ubah_Horizontal = 0.0; float Sudut_Ubah_Vertikal = 0.0; Pos_X = 0; Pos_Z = 0; Pos_Y = 0; mulai looping utama program while( mrunning ) bersihkan layar dan depth buffer glclear( GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT ); glloadidentity(); lakukan penggambaran di sini 82

--------------------------------------------------------------------------- glulookat(pos_x, Pos_Y, Pos_Z, 0, 0, 0, 0, 1, 0); glbegin(gl_lines); glend(); glcolor3f(1,0,0); glvertex2f(1,- 3); glvertex2f(- 2,5); glbegin(gl_lines); glend(); glcolor3f(0,1,0); glvertex2f(2,2); glvertex2f(- 2,- 4); --------------------------------------------------------------------------- tampilkan ke layar (swap double buffer) glfwswapbuffers(); Pos_X = 8.0 * cosf( Sudut_Ubah_Horizontal ); Pos_Z = 8.0 * sinf( Sudut_Ubah_Horizontal ); Sudut_Ubah_Horizontal += 0.01; if( Sudut_Ubah_Horizontal > 6.28 ) Sudut_Ubah_Horizontal = 0.0; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Pos_Y = 4.0 * sinf( Sudut_Ubah_Vertikal ); Sudut_Ubah_Vertikal += 0.005; if( Sudut_Ubah_Vertikal > 6.28 ) Sudut_Ubah_Vertikal = 0.0; check input, apakah tombol esc ditekan atau tombol "close" diclick 83

mrunning =!glfwgetkey( GLFW_KEY_ESC ) && glfwgetwindowparam( GLFW_OPENED ); glfwterminate(); return(0); void mulaiopengl(void) Set viewport ke resolusi 640x480 viewport bisa diibaratkan layar monitor anda glviewport( 0, 0, 640, 480 ); Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi menggunakan proyeksi perspective, dengan sudut pandang (Field Of View) 60 derajat glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); Set mode gradasi warna halus (Smooth) glshademodel( GL_SMOOTH ); warna yang digunakan untuk membersihkan layar glclearcolor( 0.0f, 0.0f, 0.0f, 0.0f ); 84

nilai untuk membersihkan depth buffer. glcleardepth( 1.0f ); Depth test digunakan untuk menghindari polygon yang tumpang tindih. glenable( GL_DEPTH_TEST ); gldepthfunc( GL_LEQUAL ); beritahu OpenGL untuk menggunakan perhitungan perspective yang terbaik (perhitungan ini tidak bisa selalu 100% akurat) glhint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); 2. Perpotongan Garis dan Poligon #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glfw.h> #include <math.h> void mulaiopengl(void); int main(void) mrunning = TRUE, aplikasi masih berjalan mrunning = FALSE,??? :p GLuint mrunning = GL_TRUE; inisialisasi GLFW 85

if( glfwinit() == GL_FALSE ) MessageBox( NULL, "ERROR :: gagal menginisialisasi GLFW", "Error!", MB_OK); return(0); buat sebuah window yang akan digunakan untuk menggambar. if( glfwopenwindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE ) MessageBox( NULL, "ERROR :: gagal membuat window", "Error!", MB_OK ); glfwterminate(); return(0); Set judul yang ada di window dan Swap interval. glfwsetwindowtitle( "Praktikum Grafik Komputer LabTI" ); glfwswapinterval( 1 ); mulai OpenGL (melakukan setting awal OpenGL) mulaiopengl(); float Pos_X, Pos_Y, Pos_Z; float Sudut_Ubah_Horizontal = 0.0; float Sudut_Ubah_Vertikal = 0.0; Pos_X = 0; Pos_Z = 0; Pos_Y = 0; 86

mulai looping utama program while( mrunning ) bersihkan layar dan depth buffer glclear( GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT ); glloadidentity(); lakukan penggambaran di sini --------------------------------------------------------------------------- glulookat(pos_x, Pos_Y, Pos_Z, 0, 0, 0, 0, 1, 0); glbegin(gl_line_loop); glend(); glcolor3f(1,0,0); glvertex2f(1,1); glvertex2f(1,- 1); glvertex2f(- 1,- 1); glvertex2f(- 1,1); glbegin(gl_lines); glend(); glcolor3f(0,1,0); glvertex2f(2,2); glvertex2f(- 2,- 4); --------------------------------------------------------------------------- tampilkan ke layar (swap double buffer) glfwswapbuffers(); Pos_X = 8.0 * cosf( Sudut_Ubah_Horizontal ); 87

Pos_Z = 8.0 * sinf( Sudut_Ubah_Horizontal ); Sudut_Ubah_Horizontal += 0.01; if( Sudut_Ubah_Horizontal > 6.28 ) Sudut_Ubah_Horizontal = 0.0; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Pos_Y = 4.0 * sinf( Sudut_Ubah_Vertikal ); Sudut_Ubah_Vertikal += 0.005; if( Sudut_Ubah_Vertikal > 6.28 ) Sudut_Ubah_Vertikal = 0.0; check input, apakah tombol esc ditekan atau tombol "close" diclick mrunning =!glfwgetkey( GLFW_KEY_ESC ) && glfwgetwindowparam( GLFW_OPENED ); glfwterminate(); return(0); void mulaiopengl(void) Set viewport ke resolusi 640x480 viewport bisa diibaratkan layar monitor anda glviewport( 0, 0, 640, 480 ); Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi menggunakan proyeksi perspective, dengan sudut pandang (Field Of 88

View) 60 derajat glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); Set mode gradasi warna halus (Smooth) glshademodel( GL_SMOOTH ); warna yang digunakan untuk membersihkan layar glclearcolor( 0.0f, 0.0f, 0.0f, 0.0f ); nilai untuk membersihkan depth buffer. glcleardepth( 1.0f ); Depth test digunakan untuk menghindari polygon yang tumpang tindih. glenable( GL_DEPTH_TEST ); gldepthfunc( GL_LEQUAL ); beritahu OpenGL untuk menggunakan perhitungan perspective yang terbaik (perhitungan ini tidak bisa selalu 100% akurat) glhint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); 89

3. Perpotongan Poligon dan Poligon #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glfw.h> #include <math.h> void mulaiopengl(void); int main(void) mrunning = TRUE, aplikasi masih berjalan mrunning = FALSE,??? :p GLuint mrunning = GL_TRUE; inisialisasi GLFW if( glfwinit() == GL_FALSE ) MessageBox( NULL, "ERROR :: gagal menginisialisasi GLFW", "Error!", MB_OK); return(0); buat sebuah window yang akan digunakan untuk menggambar. if( glfwopenwindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE ) 90

MessageBox( NULL, "ERROR :: gagal membuat window", "Error!", MB_OK ); glfwterminate(); return(0); Set judul yang ada di window dan Swap interval. glfwsetwindowtitle( "Praktikum Grafik Komputer LabTI" ); glfwswapinterval( 1 ); mulai OpenGL (melakukan setting awal OpenGL) mulaiopengl(); float Pos_X, Pos_Y, Pos_Z; float Sudut_Ubah_Horizontal = 0.0; float Sudut_Ubah_Vertikal = 0.0; Pos_X = 0; Pos_Z = 0; Pos_Y = 0; mulai looping utama program while( mrunning ) bersihkan layar dan depth buffer glclear( GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT ); glloadidentity(); lakukan penggambaran di sini --------------------------------------------------------------------------- 91

glulookat(pos_x, Pos_Y, Pos_Z, 0, 0, 0, 0, 1, 0); glbegin(gl_line_loop); glend(); glcolor3f(1,0,0); glvertex2f(1,1); glvertex2f(1,- 1); glvertex2f(- 1,- 1); glvertex2f(- 1,1); glbegin(gl_line_loop); glend(); glcolor3f(0,1,0); glvertex2f(2,2); glvertex2f(2,- 2); glvertex2f(- 2,1); --------------------------------------------------------------------------- tampilkan ke layar (swap double buffer) glfwswapbuffers(); Pos_X = 8.0 * cosf( Sudut_Ubah_Horizontal ); Pos_Z = 8.0 * sinf( Sudut_Ubah_Horizontal ); Sudut_Ubah_Horizontal += 0.01; if( Sudut_Ubah_Horizontal > 6.28 ) Sudut_Ubah_Horizontal = 0.0; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Pos_Y = 4.0 * sinf( Sudut_Ubah_Vertikal ); Sudut_Ubah_Vertikal += 0.005; if( Sudut_Ubah_Vertikal > 6.28 ) Sudut_Ubah_Vertikal = 0.0; 92

check input, apakah tombol esc ditekan atau tombol "close" diclick mrunning =!glfwgetkey( GLFW_KEY_ESC ) && glfwgetwindowparam( GLFW_OPENED ); glfwterminate(); return(0); void mulaiopengl(void) Set viewport ke resolusi 640x480 viewport bisa diibaratkan layar monitor anda glviewport( 0, 0, 640, 480 ); Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi menggunakan proyeksi perspective, dengan sudut pandang (Field Of View) 60 derajat glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); Set mode gradasi warna halus (Smooth) glshademodel( GL_SMOOTH ); warna yang digunakan untuk membersihkan layar 93

glclearcolor( 0.0f, 0.0f, 0.0f, 0.0f ); nilai untuk membersihkan depth buffer. glcleardepth( 1.0f ); Depth test digunakan untuk menghindari polygon yang tumpang tindih. glenable( GL_DEPTH_TEST ); gldepthfunc( GL_LEQUAL ); beritahu OpenGL untuk menggunakan perhitungan perspective yang terbaik (perhitungan ini tidak bisa selalu 100% akurat) glhint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); IV. PENUTUP KESIMPULAN Kliping merupakan pemotongan suatu objek dengan bentuk tertentu yang ditujukan untuk menghindari perhitungan koordinat pixel yang rumit (karenanya kliping dilakukan sebelum rasterisasi) dan untuk interpolasi parameter. Jendela kliping terdiri dari 9 bagian yang terdiri dari B, T, R, dan L. Yang masing-masing jendela terdiri dari 4 karakter ( b1, b2, b3, b4 ). Yang merupakan bagian utama dari jendela kliping adalah 0000. Jendela kliping berada diantara Xmin <= X <= Xmax dan Ymin <= Y <= Ymax. Kliping garis bisa dinyatakan sebagai visible jika titik itu berada didalam jendela kliping. Invisible jika titik itu berada diluar jendela kliping. Halfpatial jika salah satu titik itu berada didalam jendela kliping. Dan vollpatial jika titik-titiknya melewati didalam jendela. DAFTAR PUSTAKA 1. Djoko Susilo, Grafika Komputer dengan menggunakan Delphi, Graha ilmu, Yogyakarta, 2005 94