Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Grafika 130631100018 ainun_najib_modul1

oke

  • Identifiez-vous pour voir les commentaires

Grafika 130631100018 ainun_najib_modul1

  1. 1. LAPORAN RESMI PRAKTIKUM GRAFIKA KOMPUTER MODUL I “Primitive Drawing” Disusun Oleh : LABORATORIUM MICROTEACHING DAN KOMPUTER JURUSAN PENDIDIKAN INFORMATIKA FAKULTAS KEGURUAN DAN ILMU PENDIDIKAN UNIVERSITAS TRUNOJOYO MADURA T.A. 2014-2015 Disetujui : Bangkalan, ………………… (AGUS PRIYONO) 12.04.111.00056 TANGGAL PRAKTIKUM : SENIN, 30 MARET 2015 NAMA : AINUN NAJIB NRP : 130631100018 KELAS : A1 DOSEN PENGAMPU : MEDIKA RISNASARI, MT.
  2. 2. BAB I PENDAHULUAN 1.1 Latar Belakang Seiring dengan perkembangan teknologi infomasi dan komunikasi, yang lebih familiar dikalangan bangsa yaitu computer, dari perkembangan tersbut terdapat pula istilah Computer Graphic. Computer Graphic ialah bagian ilmu computer yang berkaitan dengan pembuatan visual, gambar, animasi atau pun game sederhana secara digital. Oleh karena itu perkembangan ini sangat berperan aktif di kalangan informatika selain itu juga hal ini yang menunjang sekali seperti hal di iklan, dunia film dan semuanya. Dalam pemanfaatan komputer grafik untuk manipulasi obyek, ada dua jenis obyek yang bisa dimodelkan, yaitu obyek sederhana dan obyek kompleks. Obyek sederhana dimodelkan dengan menggunakan persamaan geometri, sedangkan obyek kompleks dimodelkan dengan merangkai banyak segitiga menjadi satu kesatuan obyek. Obyek sederhana mudah dimodelkan tetapi bentuk yang dihasilkan kurang bervariasi. Sedangkan obyek kompleks lebih sulit dimodelkan tetapi bentuknya sangat bervariasi. Untuk memodelkan obyek dengan cukup mudah dan bentuk bisa bervariasi, biasanya digunakan gabungan dari obyek sederhana dan obyek kompleks. Untuk menghasilkan bentuk permukaan yang lebih bervariasi, dapat digunakan kurva bezier. Bahasa pemograman C/C++, Delphi pun juga dapat digunakan. Penggunaan bahasa pemrograman tersebut harus didukungan dengan IDE toll untuk menjalankan atau untuk memudahkan user berkomunikasi dengan komputer seperti OpenGL. Namun, sebagian orang mengira OpenGL itu sebuah bahasa pemrograman, itu salah OpenGL (Open Graphic Library) adalah sebuah library terdiri dari berbagai macam fungsi dan biasanya digunakan untuk menggambar sebuah objek 2D ata 3D. Tapi bukan berarti OpenGL adalah satu-satunya aplikasi render, pesaing
  3. 3. OpenGL directX (keluaran microsoft) memiliki fungsi yang hampir sama, namun DirectX lebih banyak digunakan oleh sebagian besar game developer karena beberapa fungsi DirectX nampaknya lebih memudahkan game developer untuk membuat game. Tapi bukan berarti tidak ada yang memakai OpenGL, tiap-tiap render memiliki kelebihan dan kekurangannya tersendiri. OpenGL biasanya digunakan dengan bahasa pemrograman C/C+. 1.2 Tujuan - Mahasiswa mampu membuat dan memanfaatkan output primitif (titik, garis, segi empat, kurva, lingkaran, elips, fill area, dan teks). - Mahasiswa mampu memahami dan mengerti apa itu OpenGL, CodeBlock dan apa itu computer graphic. - Mahasiswa memahami, mengerti fungsi dari computer graphic itu sendiri dan mampu mengeplorasi kepada orang lain
  4. 4. BAB II DASAR TEORI 2.1 TEORI Penghasilan citra pada komputer grafik menggunakan primitif grafik dasar. Primitif ini memudahkan untuk merender (menggambar pada ayar monitor) sebagaimana penggunaan persamaan geometrik sederhana. Contoh primitif grafik dasar (Gambar 1) adalah :  Titik  Garis, Segiempat  Kurva, Lingkaran, ellipse, kurva bezier, kurva lainnya  Fill area  Text  Segita Gambar: 1. Primitif Drawing Obyek kompleks dapat dibuat dengan kombinasi dari primitif ini. Adapun contoh grafik primitif yang lain adalah : - Poligaris yaitu urutan garis lurus yang saling terhubung. - Teks adalah bentuk bahasa tulisan dengan simbol-simbol tertentu. Teks merupakan kumpulan lebih dari dua karakter. - Citra raster adalah gambar yang dibuat dengan piksel yang membedakan bayangan dan warna. Citra raster disimpan dalam komputer sebagai larik bernilai numerik. Larik tersebut dikenal sebagai piksel map atau bitmap. Ada tiga cara untuk menghasilkan citra grafik yaitu citra didisain dengan
  5. 5. tangan, citra yang didapat dari perhitungan dan citra yang discan. Pemaparan citra raster dinyatakan oleh piksel dengan video displays (Cathod-ray Tube CRT), flat panel displays (LCD), hardcopy (printer laser, dot matrix printers, ink-jet printers). Contoh proses pemaparan permukaan adalah citra yang ditangkap lalu disimpan di frame buffer, kemudian digunakan untuk mewarnai sebuah titik pada permukaan pemapar. Selanjutnya proses scan di CRT. Frame buffer adalah matriks 2 dimensi yang mewakili piksel pada pemapar. Ukuran matriks harus cukup untuk menyimpan kedalam warna pemapar untuk semua piksel. Sebagai contoh pemapar (monitor) berresolusi 1280 x 1024 mempunya kedalaman warna 24 bit (~16 juta warna) membutuhkan ruang simpan sekitar 4 Mb. - Piksel dan Bitmap. Jumlah bit yang digunakan untuk mewakili warna/bayangan dari masing-masing piksel (picture element = pixel). 4 bit/piksel = 24 = 16 level abu-abu.
  6. 6. BAB III IMPLEMENTASI 3.1 Kegiatan Praktikum PROGRAM PRIMITIS DRAWING Program Primitis Drawing #include <windows.h> #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut.h> #endif #include <stdlib.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0,1.0,0.0); glBegin(GL_POLYGON); glVertex2f(-5.0, 5.0); glColor3f(0.0,0.0,0.0); glVertex2f(-5.0, -5.0); glColor3f(1.0,1.0,1.0); glVertex2f(5.0, -5.0); glColor3f(0.0,0.0,0.0); glVertex2f(5.0, 5.0); glColor3f(1.0,1.0,1.0); glVertex2f(0.10, 10.0); glEnd(); glColor3f(0.0,1.0,0.0); glBegin(GL_TRIANGLES); glVertex2f(0.0, -10.0); glVertex2f(-5.0, -5.0); glVertex2f(5.0, -5.0); glEnd(); glFlush(); } void myinit() {
  7. 7. glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-10.0,10.0,10.0,-10.0); // untuk ukuran coordinat x, y glMatrixMode(GL_MODELVIEW); glClearColor(1.0,0.0,0.0,1.0); /* menentukan intensitas warna RGB = terakhir glColor3f(0.0,0.0,1.0); } int main(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(300,300); // ukuran besarnya resolusi glutInitWindowPosition(100,100); // untuk posisi windows glutCreateWindow("Segitiga Warna"); glutDisplayFunc(display); myinit(); glutMainLoop(); return 0; } #include <windows.h> #include <GL/gl.h> #include <GL/glut.h> void display(void) { /* bersihkan layar dari titik pixel yang masih ada */
  8. 8. 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_POINTS); glVertex3f (0.0, 0.0, 0.0); glVertex3f (0.0, 0.8, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glVertex3f (-0.8, 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[]) { glutInitWindowSize(200,200); glutInitWindowPosition(100,100); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutCreateWindow("Suprapto"); glutDisplayFunc(display); glutKeyboardFunc(kunci); glutMainLoop(); return 0; }
  9. 9. 1. Gantilah sintak program yang berwarna merah bold untuk membuat berbagai macam primitive drawing seperti sintak dibawah ini. Lakukan pengamatan apa yang terjadi ? dan bagaimana hasilnya? glBegin(GL_POINTS); glBegin(GL_LINE_STRIP); glBegin(GL_LINE_LOOP); glBegin(GL_LINES); glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLE_FAN); glBegin(GL_TRIANGLE_STRIP); glBegin(GL_QUADS); glBegin(GL_QUAD_STRIP); glBegin(GL_POLYGON); 2. Lakukan penyisipan glColor3f (X, X, X); pada tiap vertek, kemudian amati lagi apa yang terjadi? 3. Lakukan pengaturan ketebalan titik dan garis dengan perintah glPointSize(x); dan glLineWidth(x); kemudian amati apa yang terjadi? glPointSize(20) glLineWidht(20)
  10. 10. 3.2 TUGAS 1. glBEGIN (GL_LINE_LOOP) #include <windows.h> #include <GL/gl.h> #include <GL/glut.h> 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, 1.0); glBegin(GL_LINE_LOOP); glVertex3f (0.0, 0.0, 0.0); glVertex3f (0.0, 0.8, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glVertex3f (-0.8, 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[]){ glutInitWindowSize(300,300); glutInitWindowPosition(200,200); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutCreateWindow("Suprapto"); glutDisplayFunc(display); glutKeyboardFunc(kunci); glutMainLoop(); return 0; }
  11. 11. 2. glBEGIN (GL_POINTS) 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, 1.0); glBegin(GL_POINTS); glVertex3f (0.0, 0.0, 0.0); glVertex3f (0.0, 0.8, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glVertex3f (-0.8, 0.0, 0.0); glEnd(); glFlush (); }
  12. 12. 3. glBegin(GL_LINE_STRIP); void display(void){ /* bersihkan layar dari titik pixel yang masih ada */ glClear (GL_LINE_STRIP); /*gambar poligon (rectangle) dengan titik sudut * * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */ glColor3f (0.0, 1.0, 0.0); glBegin(GL_POINTS); glVertex3f (0.0, 0.0, 0.0); glVertex3f (0.0, 0.8, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glVertex3f (-0.8, 0.0, 0.0); glEnd(); glFlush (); }
  13. 13. 4. glBegin(GL_LINES); void display(void){ /* bersihkan layar dari titik pixel yang masih ada */ glClear (GL_LINES); /*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.1); glBegin(GL_POINTS); glVertex3f (8.0, 0.0, 0.0); glVertex3f (0.0, 0.8, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glVertex3f (-0.8, 0.0, .0); glEnd(); glFlush (); }
  14. 14. 5. glBegin(GL_TRIANGLES); #include <windows.h> #include <GL/gl.h> #include <GL/glut.h> 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) */ glBegin(GL_POLYGON); glColor3f(0.1, 0.0, 0.1); glVertex3f (-0.8, 0.0, 0.0); glColor3f(0.0, 0.0, 1.0); glVertex3f (0.0, 0.8, 0.0); glColor3f(1.0, 1.1, 0.0); glVertex3f (0.8, 0.0, 0.0); glVertex3f (0.0, -0.8, 0.0); glColor3f(0.0, 0.1, .0); glVertex3f (-0.8, 0.0, 0.0); glColor3f(1.0, 1.0, 0.0); glEnd(); glColor3f(0.0, 1.0, 0.0); glBegin(GL_TRIANGLES); glVertex3f(0.0, 0.0, -0.8); glVertex3f (0.0, -8.0, 0.0); glVertex3f(0.0, 0.0, 0.8); glEnd(); glFlush (); } void kunci(unsigned char key, int x, int y) { switch (key) { case 27 : case 'q': exit(0); break; } glutPostRedisplay();
  15. 15. } int main(int argc, char *argv[]) { glutInitWindowSize(200,200); glutInitWindowPosition(100,100); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutCreateWindow("Suprapto"); glutDisplayFunc(display); glutKeyboardFunc(kunci); glutMainLoop(); return 0; }
  16. 16. - Segita tiga sama kaki 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) */ glBegin(GL_POLYGON); glColor3f(0.1, 0.0, 0.0); glVertex3f (-0.5, 0.0, 0.0); glColor3f(0.0, 1.0, 1.0); glVertex3f (0.0, 0.5, 0.0); glColor3f(1.0, 0.1, 0.1); glVertex3f (0.5, 0.0, 0.0); glEnd(); glFlush (); } - Gambar Kubus #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <gl/glut.h>
  17. 17. void initializer_list (void){ glClearColor(0.0, 1.0, 0.0, 1.0); glShadeModel(GL_FLAT);} void display (void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 0.0, 0.0); glLoadIdentity(); gluLookAt(0.5, 2.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glScalef(2.0, 2.0, 2.0); glutWireCube(1.0); glFlush(); } void reshape (int w, int h){ glViewport(0,0,(GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 20.0); glMatrixMode(GL_MODELVIEW); } int main (int argc, char**argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize (500,500); glutCreateWindow(argv[0]); initializer_list (); glutDisplayFunc (display); glutReshapeFunc (reshape); glutMainLoop(); return 0;}
  18. 18. - Buat Warna Pelangi yang terdiri dari 7 warna glBegin(GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (-1.0, -1.0, 0.0); glVertex3f (-1.0, 1.0, 0.0); glColor3f (1.0, 0.5, 0.0); glVertex3f (-0.75, 1.0, 0.0); glVertex3f (-0.75, -1.0, 0.0); glEnd(); glBegin(GL_POLYGON); glColor3f (1.0, 0.5, 0.0); glVertex3f (-0.75, -1.0, 0.0); glVertex3f (-0.75, 1.0, 0.0); glColor3f (1.0, 1.0, 0.0); glVertex3f (-0.5, 1.0, 0.0); glVertex3f (-0.5, -1.0, 0.0); glEnd(); glBegin(GL_POLYGON); glColor3f (1.0, 1.0, 0.0); glVertex3f (-0.5, -1.0, 0.0); glVertex3f (-0.5, 1.0, 0.0); glColor3f (0.0, 1.0, 0.0); glVertex3f (-0.25, 1.0, 0.0); glVertex3f (-0.25, -1.0, 0.0); glEnd(); glBegin(GL_POLYGON); glColor3f (0.0, 1.0, 0.0); glVertex3f (-0.25, -1.0, 0.0); glVertex3f (-0.25, 1.0, 0.0); glColor3f (0.0, 0.0, 1.0); glVertex3f (0.25, 1.0, 0.0); glVertex3f (0.25, -1.0, 0.0); glEnd(); glBegin(GL_POLYGON); glColor3f (0.0, 0.0, 1.0); glVertex3f (0.25, -1.0, 0.0); glVertex3f (0.25, 1.0, 0.0); glColor3f (1.0, 0.0, 0.5); glVertex3f (0.5, 1.0, 0.0); glVertex3f (0.5, -1.0, 0.0); glEnd(); glBegin(GL_POLYGON); glColor3f (1.0, 0.0, 0.5); glVertex3f (0.5, -1.0, 0.0); glVertex3f (0.5, 1.0, 0.0); glColor3f (1.0, 0.0, 1.0); glVertex3f (0.75, 1.0, 0.0); glVertex3f (0.75, -1.0, 0.0);
  19. 19. glEnd(); glBegin(GL_POLYGON); glColor3f (1.0, 0.0, 1.0); glVertex3f (0.75, -1.0, 0.0); glVertex3f (0.75, 1.0, 0.0); glVertex3f (1.0, 1.0, 0.0); glVertex3f (1.0, -1.0, 0.0); glEnd(); glFlush (); - Buatlah Gambar segi empat dengan didalamnya diblok warna merah #include <windows.h> #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut.h> #endif #include <stdlib.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glBegin(GL_POLYGON); glVertex2f(-5.0, 5.0); glColor3f(0.0,0.0,0.0); glVertex2f(-5.0, -5.0);
  20. 20. glColor3f(1.0,0.0,0.0); glVertex2f(5.0, -5.0); glColor3f(0.0,0.0,0.0); glVertex2f(5.0, 5.0); glEnd(); glFlush(); } void myinit() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-10.0,10.0,10.0,-10.0); // untuk ukuran coordinat x, y glMatrixMode(GL_MODELVIEW); glClearColor(0.0,1.0,0.0,0.0); // menentukan intesitas warna RGB = terakhir glColor3f(0.0,0.0,1.0); } int main(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(300,300); // ukuran besarnya resolusi glutInitWindowPosition(100,100); // untuk posisi windows glutCreateWindow("Segitiga Warna"); glutDisplayFunc(display); myinit(); glutMainLoop(); return 0; }
  21. 21. BAB IV PENUTUP 4.1 Kesimpulan Salah satu aplikasi atau software yang digunakan untuk membuat grafik, animasi ataupun game serta program sederhana lainnya. Gambar yang terdapat di dalam openGL meliputi polygon, segiti tiga, persegi dsb. Selain itu juga openGL merupakan perangkat lunak yang memiliki objek-objek tertentu yang disibut dengan primitive drawing. Dalam mengoprasikan atau menjalankan OpenGL ini selalu dimulai dengan glBegin(); dalam menggambar baik okjek, titik, atau garis selalu disertai dengan glBegin() gambar yang ingin kita gambar di masukkan di dalam kurung setelahnya misalnya, glbegin (GL_LINES); perintah dalam kurung yang akan membuat garis vertical maupun horizontal sesuai dengan selera kita. Titik koma dibelakang kurang yaitu sebagai pembatas dari setiap pengcodingan dalam openGL namun tidak semua dari coding tersebut harus ada titik komanya, seperti glEnd () }, ditandai dengan kurung kurawal yang berfungsi untuk membatasi keseluruhan program yang kita butuhkan. Setelah kita melakukan intruksi untuk membuat sesuatu yang berada dalam imajinasi kita. Maka yang dibutuhkan pula yaitu glVertex, Verrtex ini yang akan mengawali pekerjaan kita dan akan menjadi suatu acuan penting ketika dalam pembuatan objek yang berupa titik. Misalnya, glVertex (0.0, 2.0, 0.0, 0.0); maksudnya titik atau garis coordinat x atau y untuk memulai titik dalam menggambar sebuah objek. Setelah kita memula dengan glBegin(), tentu membutuhkan pula untuk mengakhiri sebuah pekerjaan, glEnd () yang menjadi penutup dari pekerjaan kita pada perangkat lunak OpenGL. 4.2 Saran Asisten tidak cukup samapai disini untuk mentransformasikan ilmu yang dimiliki, namun bagaimana nantinya kami bisa di luar praktikum untuk belajar lebih baik.

×