Nama Praktikan NPM Mahasiswa Kelas Tanda Tangan Praktikan Ryan Panca 1214370135 TI 4 Sore B
Nama Penilai Tanggal Koreksi Nilai Tanda Tangan Dosen Indri sulistianingsih, S.Kom
UNIVERSITAS PEMBANGUNAN PANCA BUDI MEDAN FAKULTAS TEKNIK 2014
Kelas TI 4 Sore B
[Type text] Page 2
DAFTAR ISI Daftar isi...................................................................................................... 2 Kata Pengantar........................................................................................... 3 Bab I Pendahuluan 1.1 Umum........................................................................................ 4 1.2 Latar Belakang......................................................................... 4 1.3 Tujuan Praktikum................................................................... 5 Bab II Landasan Teori 2.1 Membuat Garis Vertikal, Horizontal Dan Diagonal Dengan Menggunakan OpenGL....................................................... 6 2.1.1 Pengertian Open GL........................................................... 6 2.1.2 Membuat Garis Vertikal..................................................... 8 2.1.3 Membuat Garis Horizontal................................................. 9 2.1.4 Membuat Garis Diagonal.................................................... 10 Bab III Hasil Percobaan/Praktikum 3.1 Contoh Latihan fungsi dari primitive drawing....................... ...... 13 3.2 Contoh Latihan Fungsi dari 2D.......................................... ....... 16 3.3 Contoh Latihan Fungsi dari 2D........................................... ....... 23 3.3.1 Poligon............................................................... ....... 23 3.3.2 Transformasi Objek 3D........................................ ....... 23 Bab IV Analisa Hasil Percobaan 4.1 Analisisa Program 2Dimensi................................................ ....... 27 4.2 Analisa Program 3Dimensi................................................ ....... 27 Penutup Daftar Pustaka
[Type text] Page 3
KATA PENGANTAR
Puji syukur kehadirat Allah SWT, karena dengan rahmat dan hidayah-Nyalah penulis dapat menyelesaikan makalah ini tepat pada waktunya. Shalawat beriring salam selalu kita panjatkan kepada Rasullullah SAW, karena kegigihan beliau dan ridho-Nyalah kita dapatmerasakan kenikmatan dunia seperti sekarang ini.
Adapun tujuan dari penulisan makalah ini adalah untuk memenuhi tugas yang diberikan olah dosen pada mata kuliah Komputer Grafik, makalah ini juga bertujuan untuk menambah pengetahuan dan wawasan bagi pembaca sekalian.
Penulis mengucapkan terimakasih kepada Ibu Indri Sulistianingsih, S.Kom selaku dosen mata kuliah Komputer Grafik yang telah membimbing penulis dalam menyelesaikan penulisan makalah ini tepat waktunya.
Penulis menyadari bahwasanya makalah ini masih jauh dari kesempurnaan, oleh karena itu kritik dan saran penulis harapkan dari pembaca sekalian demi terciptanya kesempurnaan dalam penyusunan makalah ini. Semoga makalah ini bermanfaat bagi kita yang memrluan. Terima kasih
Medan, 12 Juni 2014
Penulis Ryan Panca NPM : 1214370135
[Type text] Page 4
BAB I PENDAHULUAN
1.1 Umum Tahun 1978, Brian W. Kerninghan & Dennis M. Ritchie dari AT & T Laboratories mengembangkan bahasa B menjadi bahasa C. Bahasa B yang diciptakan oleh Ken Thompson sebenarnya merupakan pengembangan dari bahasa BCPL ( Basic Combined ProgrammingLanguage ) yang diciptakan oleh Martin Richard.
Sejak tahun 1980, bahasa C banyak digunakan pemrogram di Eropa yang sebelumnya menggunakan bahasa B dan BCPL. Dalam perkembangannya, bahasa C menjadi bahasa paling popular diantara bahasa lainnya, seperti PASCAL, BASIC, FORTRAN.
Tahun 1989, dunia pemrograman C mengalami peristiwa penting dengandikelua rkannya standar bahasa C oleh American National Standards Institute (ANSI). BahasaC yang diciptakan Kerninghan & Ritchie kemudian dikenal dengan nama ANSI C.
Mulai awal tahun 1980, Bjarne Stroustrup dari AT & T Bell Laboratories mulai mengembangkan bahasa C. Pada tahun 1985, lahirlah secara resmi bahasa baru hasil pengembangan C yang dikenal dengan nama C++. Sebenarnya bahasa C++ mengalami duatahap evolusi. C++ yang pertama, dirilis oleh AT&T Laboratories, dinamakan cfront. C++versi kuno ini hanya berupa kompiler yang menterjemahkan C++ menjadi bahasa C.
Pada evolusi selanjutnya, Borland International Inc. mengembangkan kompiler C++ menjadi sebuah kompiler yang mampu mengubah C++ langsung menjadi bahasa mesin(assembly). Sejak evolusi ini, mulai tahun 1990 C++ menjadi bahasa berorientasi obyek yang digunakan oleh sebagian besar pemrogram professional
1.2 LATAR BELAKANG
Perkembangan grafika komputer menuntut para pengembang sistem aplikasi grafika komputer untuk dapat mengembangkan suatu informasi yang dilengkapi dengan visualisasi dan animasi, agar dapat lebih mudah dipahami oleh pihak yang menggunakan sistem tersebut. Grafika komputer telah menunjukkan kemajuan yang pesat dalam pengembangan berbagai aplikasi untuk menghasilkan gambar. Grafika komputer digunakan untuk menunjang berbagai bidang dengan teknologi grafika berbasis komputer. Penggunaan grafika komputer telah lama digunakan dalam beberapa macam aplikasi, diantaranya pendidikan, kedokteran, fisika, matematika, multimedia, dan lain-lain. Pada saat ini grafika komputer sudah digunakan pada bidang sains, engineering, kedokteran, bisnis, industri, pemerintahan, seni, hiburan, iklan, pendidikan, dan lain-lain. Oleh karena itu, sudah semakin banyak pula bahasa pemrograman yang dilengkapi dengan tools/library pembuatan grafik Salah satu tools/library pembuatan aplikasi grafik adalah OpenGL (Open Graphics Library).
[Type text] Page 5
OpenGL(Open Graphics Library) adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi. Dan makalah yang disampaikan kali ini khusus membahas mengenai perancangan bangun 3 dimensi menggunakan Visual Basic 6.0
1.3 TUJUAN PRAKTIKIUM Mahasiswa mampu memahami dan menerapkan aplikasi komputer grafik menggunakan bahasa pemrograman Visual Basic C++.
[Type text] Page 6
BAB II LANDASAN TEORI 2.1 Membuat Garis Vertikal, Horizontal Dan Diagonal Dengan Menggunakan OpenGL
2.1.1 Pengertian OPEN GL OpenGL (Open Graphics Library) adalah suatu standar API yang digunakan untuk membuat aplikasi berbasis grafik,baik untuk 2 dimensi (2D) atau 3 dimensi (3D). didalam OpenGL mempunyai banyak pustaka /library yang disebut OpenGL Unit Library Toolkit(Glut). Didalam Glut tersebut sudah terdapat berbagai fungsi, mulai aplikasi windows (windowing) sampai aplikasi grafik lainnya, sehingga tidak repot-repot mengubah kode progam jika diterapkan pada sistem operasi dan perangkat lunak yang berbeda. OpenGL ini sifatnya open source, dapat dipakai pada banyak platform (Windows ataupun Linux) dan dapat digunakan pada berbagai jenis compiler bahasa pemrograman seperti C++, Delphi, Java ataupun VB. OpenGL adalah suatu graphic library yang sebagian bersifat open source, dipakai pada banyak platform (windows, linux) dan dapat digunakan pada berbagai jenis compiler seperti C++ atau Delphi. OpenGL bukanlah bahasa pemrograman tetapi merupakan suatu Application Programming Interface (API). Sintax perintah OpenGL Sintaks perintah OpenGL mengikuti aturan penulisan dari library dimana fungsi tersebut berasal, format penulisan fungsi OpenGL : <awalanlibrary><perintah><optional jumlah argumen><optional tipe argumen> Semua perintah OpenGL menggunakan awalan gl diikuti dengan huruf kapital pada setiap kata membentuk nama perintah (sebagai contoh glClearColor). Untuk mendefinisikan konstanta diawali dengan GL_, dengan menggunakan huruf kapital dan garis bawah untuk memisahkan kata (seperti GL_POLY_STIPPLE). Terkadang beberapa huruf dan angka ditambahkan pada akhir perintah (seperti 3f pada glVertex3f). Dalam hal ini angka 3 menunjukkan berapa banyak argumen yang harus ada pada perintah tersebut dan akhiran huruf f menunjukkan jenis datanya yaitu floating.
[Type text] Page 7
Langkah awal membuat program OpenGl.Pertama yang harus yang kita lakukan pastikan leptop anda sudah terinstal aplikasi ini kalau belum lakukan dengan cara menginstal Dev C++ dan gluth.h yaitu header yang digunakan untuk openGL.Karena software inilah yang akan digunakan untuk bekerja dengan openGL.Buka Dev C++ untuk memulai project baru.Sedangkan beberapa library yang telah ditulis untuk menyediakan fungsi-fungsi tambahan pada OpenGL adalah : A. OpenGL Utility Library (GLU) yang didalamnya terdapat sejumlah rutin yang menggunakan level bawah dari perintah OpenGL. Rutin-rutin ini mempunyai awalan glu. Library ini digunakan sebagai bagian dari implementasi OpenGL. B. OpenGL Extension untuk X-Windows yang menyediakan fungsi untuk menciptakan OpenGL context dan mengasosiasikannya dengan mesin yang menggunakan X-Windows. Rutin-rutin ini mempunyai awalan glx. C. Auxiliary atau aux library terdapat pada library glaux.lib dan file header glaux.h. Perintah yang akan digunakan selalu menggunakan awalan aux D. OpenGL Utility Toolkit (GLUT) adalah toolkit untuk sistem windows yang ditulis oleh Mark Kilgard untuk menyembunyikan perintah API sistem windows yang kompleks. cara membuat project baru : 1. Klik menu File > Pilih New > Project .
2. Pada bagian ini pilih tag Multimedia > lalu klik OpenGL dan beri nama Project.
[Type text] Page 8
Setelah membuat project,lanjut kita untuk membuat program yang ditugaskan pada mata kuliah grafik komputer dan pengolahan citra ini yaitu membuat garis Vertikal,Horizontal dan Diagonal. Jangan lupa pada saat menuliskan koding dibawah /* OpenGL animation code goes here */
2.1.2 Membuat Garis Vertikal
Koding dan penjelasannya : /* OpenGL animation code goes here */
[Type text] Page 9
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk membersihkan latar dalam mode RGBA glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang glPushMatrix (); //Membuat baris kode menjadi tidak berlaku untuk bagian luar. glClearColor(1,1,1,0);//untuk menentukan warna garis/titik. glColor3f(1,1,1); // untuk menentukan warna garis/titik. glBegin(GL_LINES); //untuk menggambar garis dari titik yang digunakan . glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan. glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan. glEnd ();//untuk mengakhiri gambar garis dititik akhir . glPopMatrix ();//Membuat baris kode menjadi tidak berlaku untuk bagian luar. SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar. Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung berjalan dan menghasilkan output :
2.1.3 Membuat Garis Horizontal Untuk membuat garis Horizontal langkah-langkahnya sama seperti membuat garis vertikal hanya berbeda pada kodingnya. Berikut adalah koding garis horizontal :
[Type text] Page 10
Koding dan penjelasannya : /* OpenGL animation code goes here */ glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk membersihkan latar dalam mode RGBA glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang glPushMatrix ();Membuat baris kode menjadi tidak berlaku untuk bagian luar. glClearColor(1,1,1,0);//untuk menentukan warna garis/titik. glColor3f(1,1,1); // untuk menentukan warna garis/titik. glBegin(GL_LINES);//untuk menggambar garis dari titik yang digunakan . glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan. glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan. glEnd ();//yaitu untuk mengakhiri gambar garis dititik akhir . glPopMatrix ();// Membuat baris kode menjadi tidak berlaku untuk bagian luar. SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar. Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung berjalan dan menghasilkan output :
[Type text] Page 11
2.1.4 Membuat Garis Diagonal Untuk membuat garis Diagonal langkah-langkahnya sama seperti membuat garis vertikal dan horizontal hanya berbeda pada kodingnya. Berikut adalah koding garis diagonal :
Koding dan penjelasannya : /* OpenGL animation code goes here */ glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk membersihkan latar dalam mode RGBA glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang glPushMatrix ();// Membuat baris kode menjadi tidak berlaku untuk bagian luar.
[Type text] Page 12
glClearColor(1,1,1,0);//untuk menentukan warna garis/titik. glColor3f(1,1,1); //untuk menentukan warna garis/titik. glBegin(GL_LINES);//untuk menggambar garis dari titik yang digunakan . glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan. glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan. glEnd ();//yaitu untuk mengakhiri gambar garis dititik akhir . glPopMatrix ();//Membuat baris kode menjadi tidak berlaku untuk bagian luar. SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar. Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung berjalan dan menghasilkan output :
[Type text] Page 13
BAB III HASIL PERCOBAAN / PRAKTIKUM 3.1 Contoh Latihan fungsi dari primitive drawing Primitive Drawing merupakan cara mudah untuk menggambar pada layar monitor menggunakan teori geometri sederhana. Macam-macam primitive drawing seperti menggambar sebuah titik, garis, atau gabungan antar keduanya. Berikut akan aku share beberapa script tentang primitive drawing dalam bahasa C++
1. Membuat segitiga sama kaki.
Berikut adalah scriptnya :
void display(void)
{
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (1.0, 1.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.3, 0.8, 0.0);
glVertex3f (0.6, 0.0, 0.0);
glEnd();
glFlush (); }
void kunci(unsigned char key, int x, int y) {
switch (key) {
case 27 : case 'q': exit(0); break; } glutPostRedisplay(); }
int main(int argc, char *argv[]) {
[Type text] Page 14
glutInitWindowSize(200,200);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("UMI FATIMAH");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
} Script berikut :
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.3, 0.8, 0.0);
glVertex3f (0.6, 0.0, 0.0);
glEnd();
Dapat diganti dengan :
glBegin(GL_LINE_LOOP);
glVertex2f (0.0, 0.0);
glVertex2f (0.3, 0.8);
glVertex2f (0.6, 0.0); glEnd();
glVertex2f disini menunjukan bahwa koordinat titik menggunakan tipe data float karena berupa pecahan. dan jika koordinat tidak menggunakan bilangan pecahan maka tipe datanya dapat menggunakan int. sedangkan angka 2 menunjukan titik tersebut terbentuk dari 2 koordinat yaitu x dan y. jika 3 berarti terbentuk dari x, y, dan z.
2. Membuat bentuk kubus
Sebenernya sama aja dengan pembuatan bentuk segitiga tadi, kita seperti hanya bermain koordinat cartesius saja. Untuk membuat bentuk kubus kita bisa mengganti script yang berwarna merah dengan script berikut :
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, -0.9, 0.0);
[Type text] Page 15
glVertex3f (0.0, -0.4, 0.0);
glVertex3f (0.5, -0.4, 0.0);
glVertex3f (0.5, -0.9, 0.0);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f (0.3, -0.5, 0.0);
glVertex3f (0.3, -0.1, 0.0);
glVertex3f (0.8, -0.1, 0.0);
glVertex3f (0.8, -0.5, 0.0);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, -0.4, 0.0);
glVertex3f (0.3, -0.1, 0.0);
glVertex3f (0.8, -0.1, 0.0);
glVertex3f (0.5, -0.4, 0.0);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, -0.9, 0.0);
glVertex3f (0.3, -0.5, 0.0);
glVertex3f (0.8, -0.5, 0.0);
glVertex3f (0.5, -0.9, 0.0);
glEnd();
1
script diatas sebenarnya cuma akal-akalan doank, bagaimana beberapa bidang disatukan menjadi bentuk seperti kubus. Membentuk suatu kubus sebenarnya bisa dibuat dengan permainan garis menggunakan gl_LINE_LOOP, namun yang perlu diingat adalah bahwa gl_LINE_LOOP menghubungkan titik-titik secara berurutan, jadi agar titik-titik dapat disatukan menggunakan garis sehingga membentuk suatu kubus, maka titik-titik tersebuat harus dibuat berdasarkan urutan yang benar.
[Type text] Page 16
3.2 Contoh latihan fungsi dari 2D Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yang dihubungkan dengan garis lurus, baik berupa polyline, polygon atau kurva. Objek grafik 2 dimensi didefinisikan sebagai kumpulan titik 2dimensi yang secara komputasi dinyatakan sebagai array 1D, atau linkedlist sesuai dengan struktur data yang digunakan dalam menyatakan kumpulan titik 2D ini. Objek grafik dimensi juga adalah gambar 2 dimensi yang sumbu x dan sumbu y, atau sumbu koordinat cartesius dua dimensi. Dua sumbu yang saling bertegak lurus antar satu dengan yang lain, yang keduanya terletak dalam satu bidang (bidang xy). Sedangkan Grafik komputer 2D adalah sebuah generasi gambar digital berbasis komputer, yang kebanyakan mengambil objek-objek dua dimensi (2D). Model Grafik 2D merupakan kombinasi dari model geometri (juga disebut sebagai grafik vektor), gambar digital (raster graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat dimodifikasi dan dimanipulasi oleh transformasi geometri dua dimensi, seperti translasi, rotasi, dan dilatasi. Model-model yang digunakan pada disain grafis 2D biasanya tidak mendukung bentuk- bentuk tiga-dimensi, atau fenomena yang bersifat tiga dimensi, seperti pencahayaan, bayangan, pantulan, refraksi, dan sebagainya. Namun demikian, mereka dapat membuat model berlapis-lapis (layer); nyata, translusen, dan transparan, yang dapat ditumpuk dalam urutan tertentu. Urutan tersebut biasanya didefinisikan dengan angka (kedalaman lapisan, atau jarak dari si penglihat). Macam-Macam objek 2D : Line Circle Arc Polygon Text Section Rectangle Ellips Donut Star Helix
Dari macam-macam objek 2d ini saya akan membahas 3 macam: Circle
[Type text] Page 17
Circle atau lingkaran adalah object 2 dimensi yang memiliki ukuran diameter dan jari-jari. Circle atau lingkaran merupakan kumpulan titik-titik yang tak berhingga dan saling berhubung.
3.2.2 Line
Objek line/garis adalah objek salah satu 2 dimensi yang sangat mendasar dan sering digunakan untuk perancangan gambar kerja. Line berasal dari 2 titik yang saling terhubung.
3.2.3 Polygon
4
Polygon adalah suatu fungsi yang mirip dengan polyline, hanya saja hasilnya adalah kurva tertutup. Pada polygon digunakan konsep array dalam menyatakan objek 2D sebagaikumpulan titik 2D. Polygon digunakan untuk merepresentasikan objek-objek dua
[Type text] Page 18
dimensi. Suatu poygon paling sedikit dibatasi oleh tiga garis yang saling terhubung di antara ketiga titik tersebut.
Adapun langkah-langkah untuk mendefinisikan objek grafik 2 dimensi : 3.2.4 Mendefinisikan struktur dari titik 2D
Sistem Koordinat OpenGL
3.2.5 Mendefinisikan struktur warna Untuk memberi warna pada objek, seperti titik atau garis, dapat dilakukan dengan menggunakan fungsi glColor3f(red,green,blue); Di mana red, green, blue berada pada 0 sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala.
3.2.6 Mendefinisikan struktur dari objek grafik 2D Fungsi gluOrtho2D (left,right,bottom,top) gluOrtho2D(-320,320,-240,240)
[Type text] Page 19
Objek primitive (Lanjutan) a. Triangle GL_TRIANGLES Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga dengan blok di tengahnya. b. Quads GL_QUADS Quad atau segempat adalah empat buah titik yang terhubung menjadi suatu segempat dengan blok di tengahnya. c. Polygon GL_POLYGON Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan kurva tertutup dengan blok warna (fill).
Contoh Program 2 Dimensi : #include <GL/glut.h> #include <math.h>
Secara konseptual dalam grafika komputer objek 3 dimensi dibuat dari rangkaian poligon. Poligon adalah sejumlah dari segmen garis yang dihubungkan antara ujung garis satu dengan yang lainnya membentuk suatu bidang tertutup. Objek 3 dimensi memiliki tiga ukuran yaitu panjang, lebar dan kedalaman, dimana dalam geometri disimbolkan X, Y dan Z. Menurut fungsinya objek 3 10 dimensi mempunyai dua variable bebas (X dan Y) dan satu variable tidak bebas (Z, karena nilai Z tergantung pada nilai X dan Y). Objek 3 dimensi diantaranya sebagai berikut : 1. Kubus Kubus adalah balok dengan bidangbidang sisi yang bujur sangkar. Batasbatas luar kubus membentuk poligon enam sisi (heksagonal). 2. Balok Balok adalah poligon tiga sisi (heksagonal) beraturan dengan bidang sisi terdiri dari dua buah persegi panjang dan dua buah bujur sangkar. 3. Bola Bentuk bola diperoleh dengan memutar busur lingkaran melalui sumbu yang melalui titik pusatnya.
3.3.1 Poligon Poligon adalah bentuk yang disusun dari serangkaian garis. Gambar 2.3 memberikan beberapa contoh poligon. Titik sudut dari poligon disebut vertex sedangkan garis penyusun poligon disebut edge. [4] 11 Gambar 2.3 Poligon Poligon digambar dengan menggambar masingmasing edge dengan setiap edge merupakan pasangan dari vertexi vertexi+1 kecuali untuk edge terakhir merupakan pasangan dari vertexn vertex1. [3] Jaring Poligon adalah permukaan yang dibuat dari kumpulan mukamuka poligon. Secara konseptual, jaring poligon digunakan di grafika komputer untuk menghasilkan objek 3 dimensi. Untuk lebih jelasnya, lihat pada gambar 2.4. Gambar 2.4 Ilustrasi muka poligon dengan objek kubus
3.3.2 Transformasi Objek 3 Dimensi Salah satu sub bagian dari grafika komputer adalah pemodelan objek (object modeling). Dalam pemodelan objek 2 dimensi, didapati berbagai objek 12 dapat dimodelkan. Menurut kondisi tertentu, objek yang dimodelkan itu perlu dimodifikasi. Pemodifikasian objek ini dapat dilakukan dengan melakukan berbagai operasi fungsi atau operasi transformasi geometri. Transformasi ini dapat berupa transformasi dasar ataupun gabungan dari berbagai transformasi geometri. Pada dasarnya transformasi adalah memindahkan objek tanpa merusak bentuk. Tujuan transformasi adalah : 1. Merubah atau menyesuaikan komposisi pemandangan.
[Type text] Page 24
2. Memudahkan membuat objek yang simetris. 3. Melihat objek dari sudut pandang yang berbeda. 4. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, ini biasa dipakai untuk animasi komputer. Transformasi pada dunia 3 dimensi, pada dasarnya sama dengan transformasi pada 2 dimensi, hanya pada 3 dimensi kita juga memperhitungkan sumbu Z. Sama seperti pada 2 dimensi, ada tiga transformasi dasar yang dapat dilakukan yaitu translasi, penskalaan, rotasi. Perbedaannya adalah pada objek 3 dimensi proses transformasinya dilakukan dengan mempertimbangkan koordinat yang merupakan besarnya kedalaman dari objek.
void cube() { //menggambar kubus dan transformasi tarnslasi ke titik 0.5 0.5 0.5 dan skala 1 1 1 glPushMatrix(); glTranslated(0.5,0.5,0.5);//cube glScaled(1.0,1.0,1.0); glutSolidCube(1.0); glPopMatrix(); }
void setMaterial() { //set properties of surfaces material GLfloat mat_ambient[] = {0.7f,0.7f,0.7f,1.0f}; // ada 4 jenis material yang dipakai, dengan kombinasi warna tertentu GLfloat mat_diffuse[] = {0.6f,0.6f,0.6f,1.0f}; GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f}; GLfloat mat_shininess[] = {50.0f}; glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient); glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); }
void setViewport() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); double winHt = 1.0;//half height of the window glOrtho(-winHt*64/48,winHt*64/48,-winHt,winHt,0.1,100.0); }
void setCamera() { //set the camera glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(3.3,3.3,3.0,0,0.25,0,0.0,1.0,0.0); }
void displayObject() { setMaterial(); setLighting(); setViewport(); setCamera(); //startDrawing glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); cube();//memanggil fungsi menggambar kubus glFlush();//mengirim smua objek untuk dirender }
void main(int argc, char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize(640,480); glutInitWindowPosition(100,100); glutCreateWindow("simple 3d scene"); glutDisplayFunc(displayObject);//fungsi dari display object yang menggabungkan kubus lighting material dan kamera
4.1 Analisis Program 2Dimensi Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yang dihubungkan dengan garis lurus, baik berupa polyline, polygon atau kurva. Objek grafik 2 dimensi didefinisikan sebagai kumpulan titik 2dimensi yang secara komputasi dinyatakan sebagai array 1D, atau linkedlist sesuai dengan struktur data yang digunakan dalam menyatakan kumpulan titik 2D ini.
4.2 Analisis Program 3Dimensi grafika komputer objek 3 dimensi dibuat dari rangkaian poligon. Poligon adalah sejumlah dari segmen garis yang dihubungkan antara ujung garis satu dengan yang lainnya membentuk suatu bidang tertutup. Objek 3 dimensi memiliki tiga ukuran yaitu panjang, lebar dan kedalaman, dimana dalam geometri disimbolkan X, Y dan Z. Menurut fungsinya objek 3
[Type text] Page 28
Penutup
Demikianlah makalah yang saya buat ini, semoga bermanfaat dan menambah pengetahuan para pembaca. Saya mohon maaf apabila ada kesalahan ejaan dalam penulisan kata dan kalimat yang kurang jelas, dimengerti, dan lugas.Karena saya hanyalah manusia biasa yang tak luput dari kesalahan Dan kami juga sangat mengharapkan saran dan kritik dari para pembaca demi kesempurnaan makalah ini.
Sekian penutup dari kami semoga dapat diterima di hati dan kami ucapkan terima kasih yang sebesar-besarnya Terima kasih.