aris mbajeng wahyu prasiska-100533402635

12

Click here to load reader

Upload: ariz-mbajeng-wahyu-prasiska

Post on 11-Aug-2015

64 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Aris Mbajeng Wahyu Prasiska-100533402635

Petunjuk

1. Sebelum mengerjakan awali dengan doa .

2. Pilih salah satu jawaban yang paling tepat.

SOAL PILIHAN GANDA

1. Berikut adalah keunggulan dari GLUT yang paling tepat yaitu...

a. Didesain untuk aplikasi dengan level besar hingga menengah.

b. Didesain untuk aplikasi dengan level tinggi hingga menengah.

c. Distribusi library bebas tetapi tidak open source.

d. Distribusi library bebas dan open source.

2. Looping yang terjadi dalam aplikasi bertujuan untuk penanganan fungsi-fungsi callback sebagai input dari user seperti fungsi...

a. Redraw

b. Mouse

c. Joystick

d. Semua jawaban benar

3. Fungsi dari glVertex2i (x,y) adalah...

a. Menggambar titik pada koordinat x dan y, dengan nilai satuan integer.

b. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa double.

c. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa float.

d. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa kostanta.

4. Fungsi dari glVertex2d(x,y) adalah...

a. Menggambar titik pada koordinat x dan y, dengan nilai satuan integer.

b. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa double.

c. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa float.

d. Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa kostanta.

5. Untuk membuat sebuah segitigas maka objek primitive yang di gunakan adalah...

a. GL_QUADS

Page 2: Aris Mbajeng Wahyu Prasiska-100533402635

b. GL_POLYGON

c. GL_TRIANGLES

d. GLCOLOR3F

6. Fungsi berikut glutTimerFunc di gunakan untuk...

a. Dimungkinkan untuk membuat sebuah animasi yang dikontrol oleh waktu.

b. Dimungkinkan untuk membuat sebuah animasi yang dikontrol oleh keyboard

c. Dimungkinkan mengirimkan perintah untuk mengaktifkan display secara berkala

d. Dimungkinkan mengirimkan perintah untuk mengaktifkan display secara periodik

7. Fungsi dari GLUT_DOWN yaitu...

a. Untuk inisialisasi button mouse kanan.

b. Untuk inisialisasi button mouse kiri.

c. Untuk inisialisasi ketika tombol mouse ditekan.

d. Untuk inisialisasi ketika tombol mouse dilepaskan.

8. Fungsi glutWireSphere dan glutSolidSphere adalah...

a. Membuat bola berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu Y positif.

b. Membuat bola berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu X dan Y positif.

c. Membuat bola berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu Y positif.

d. Membuat bola berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu X positif.

9. void glutSolidCube(GLdouble size); fungsi berikut jika digunakan

akan memunculkan bentuk ?...a. Kubus Solidb. Kerucut Solidc. Torus Solidd. Dodecahedron Solid.

Page 3: Aris Mbajeng Wahyu Prasiska-100533402635

10. void glutSolidCone(GLdouble base, GLdouble height,GLint slices, GLint stacks); fungsi berikut jika digunakan akan memunculkan

bentuk ?...a. Kubus Solidb. Kerucut Solidc. Torus Solidd. Dodecahedron Solid.

11. Untuk mendeteksi input dari keyboard, fungsi yang digunakan adalah ...

a. glutKeyboardFunc

b. glutMouseFunc

c. glutMotionFunc

d. glutDisplayFunc

12. Untuk mendeteksi input dari mouse, fungsi yang digunakan adalah ...

a. glutKeyboardFunc

b. glutMouseFunc

c. glutMotionFunc

d. glutDisplayFunc

13. Inisialisasi yang menghubungkan antara source code untuk texture mapping dengan program utama. Source code dan header yang digunakan yaitu ...

a. imageloader.h dan imageloader.cpp

b. glut_imageloader dan imageloader.cpp

c. imageloader.h dan imageloader

d. imageloader dan glut_imageloader

14. Fungsi Lighting ambient digunakan untuk ...

a. Untuk memberikan cahaya yang menkilat pada obyek

b. Untuk memberikan cahaya pada obyek

c. Untuk memberikan pencahayaan yang dipantulkan oleh benda yang permukaannya kasar

d. Untuk memberikan cahaya yang memantul dari benda lain di sekitar obyek

15. Fungsi Lighting-Specular digunakan untuk ...

Page 4: Aris Mbajeng Wahyu Prasiska-100533402635

a. Untuk memberikan cahaya yang menkilat pada obyek

b. Untuk memberikan pencahayaan yang menciptakan cahaya yang terang atau sebuah titik terang pada permukaan obyek

c. Untuk memberikan pencahayaan yang dipantulkan oleh benda yang permukaannya kasar

d. Untuk memberikan cahaya yang memantul dari benda lain di sekitar obyek

SOAL URAIAN

1.

Fungsi dari render pada source code di atas adalah...

Jawaban :

Pada fungsi render tersebut terdapat 2 fungsi drawQuad yang dipanggil, dimana masing-masing merupakan objek terpisah. Terdapat pula fungsi –fungsi yang belum diaktifkan (dalam comment), lakukan perubahan nilai RGB pada 2 warna sehingga menjadi merah untuk fungsi glColor3f pertama dan putih untuk fungsi glColor3f yang kedua.

2. Fungsi dari glutPostRedisplay adalah...

Page 5: Aris Mbajeng Wahyu Prasiska-100533402635

Jawaban

Fungsi dari glutPostRedisplay adalah mengirimkan perintah untuk mengaktifkan display secara berkala (looping).

3. Ubahlah fungsi init menjadi sebagai berikut.

Page 6: Aris Mbajeng Wahyu Prasiska-100533402635

Jawaban

4. Buatlah sebuah program dengan menggunakan fungsi WireCone dengan interaksi rotasi pada 3 sumbu (tombol : x,y,z), mengubah tinggi (panah atas, panah bawah) dan alas (panah kanan, panah kiri)

Page 7: Aris Mbajeng Wahyu Prasiska-100533402635

Jawaban

Page 8: Aris Mbajeng Wahyu Prasiska-100533402635

5. Buatlah sebuah program yang menampilkan semua benda solid secara mendatar di koordinat x, dengan warna yang bervariasi untuk tiap benda 3d tersebut. Sajikan screenshot dan

#include<stdlib.h>#include<gl/glut.h>#include<stdio.h>

float x = 0, y = 0, z = -25;float w = 480, h = 480;int xr,yr ,zr,sudut,ukuran=4,alas=4;

void WireCone(void){glColor3f(1,0,0.5);glutWireCone(alas,ukuran, 20,20);}

void renderScene(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);glColor3f(1, 0, 0.5);WireCone();glutSwapBuffers();}

void resize(int w1, int h1){glViewport(0, 0, w1, h1);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0, (float) w1 / (float) h1, 10.0, 300.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();

}

void init(){glClearColor(1, 1, 1, 1);glEnable(GL_DEPTH_TEST);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45., (GLdouble) w / (GLdouble) h, 1., 300.);glMatrixMode(GL_MODELVIEW);}

void mySpecialKeyboard(int key, int x, int y){

switch(key){case GLUT_KEY_UP :ukuran += 1;break;case GLUT_KEY_DOWN :ukuran -= 1;break;case GLUT_KEY_RIGHT :alas -= 1;break;case GLUT_KEY_LEFT :alas += 1;break;}}

void keyboard(unsignedchar key, int x, int y){

if(key == 's')z += 4;elseif(key == 'w')z -= 4;elseif(key == 'x'){sudut += 10;xr=1;yr=0;zr=0;}elseif(key == 'y'){sudut -= 10;xr=0;yr=1;zr=0;}elseif(key == 'z'){sudut -= 10;xr=0;yr=0;zr=1;}

}void update(int value){glutPostRedisplay();glutTimerFunc(50, update, 0);}

void main(int argc, char **argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);glutInitWindowPosition(100, 100);glClearColor(1, 1, 1, 0);glutInitWindowSize(w, h);glutCreateWindow("3D");glutDisplayFunc(renderScene);glutReshapeFunc(resize);init();glutTimerFunc(0, update, 0);glutKeyboardFunc(keyboard);glutSpecialFunc(mySpecialKeyboard);glutMainLoop();}

Page 9: Aris Mbajeng Wahyu Prasiska-100533402635

program untuk render-nya. Tambahkan code di bawah ini pada fungsi rendering sebelum menampilkan obyek-obyek 3 dimensi :

glEnable(GL_COLOR_MATERIAL);………(obyek 3 dimensi)………(obyek 3 dimensi)

glDisable(GL_COLOR_MATERIAL);jawaban

Page 10: Aris Mbajeng Wahyu Prasiska-100533402635

#include<stdlib.h>#include<glut.h>#include<stdio.h>

float x = 0, y = 0, z =-25;float w = 520, h = 520;int xr,yr ,zr,sudut;

void Bola(void){glColor3f(1,0,1);glTranslatef(-8, 0, 0);glutSolidSphere(1, 50, 10);}

void kubus(void){glColor3f(1,1,0);glTranslatef(-6, 0, 0);glutSolidCube(2);}

void Ceret(void) {glColor3f(1,0,0);glTranslatef(6, 0, 0);glutSolidTeapot(2);}

void kerucut(void){glColor3f(0,1,0);glTranslatef(-4, 0, -1);glutSolidCone(1,2,10,10);}

void Torus(void){glColor3f(0,0,1);glTranslatef(0, 0, -1);glutSolidTorus(1,2,10,10);}

void resize(int w1, int h1){glViewport(0, 0, w1, h1);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0, (float) w1 / (float) h1, 10.0, 300.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}

void init(){GLfloat LightPosition[]={10.0f,0.0f,20.0f,0.0f};

GLfloat LightAmbient[]={0.0f,1.0f,0.0f,1.0f};

GLfloat LightDiffuse[]={0.7f,0.7f,0.7f,1.0f};

GLfloat LightSpecular[]={0.5f,0.5f,0.5f,1.0f};

GLfloat Shine[] = {80};glShadeModel(GL_SMOOTH);

glClearColor(0.0f,0.0f,0.0f,0.5f);glClearDepth(1.0f);glEnable(GL_DEPTH_TEST);

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);glMaterialfv(GL_FRONT, GL_SPECULAR, LightSpecular);glLightfv(GL_LIGHT1, GL_SHININESS, Shine);glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);

glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);

glClearColor(0.5,0.5,0.5,0.3);return;

}

void renderScene(void){glClear(GL_COLOR_BUFFER_BIT |

GL_DEPTH_BUFFER_BIT);glEnable(GL_COLOR_MATERIAL);glLoadIdentity();glColor3f(1, 0, 0.5);glPushMatrix();glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);Bola();glPopMatrix();glPushMatrix();glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);kubus();glPopMatrix();glPushMatrix();glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);kerucut();glPopMatrix();glPushMatrix();glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);Torus();glPopMatrix();glPushMatrix();

glTranslatef(x, y, z);glRotatef(sudut, xr, yr, zr);Ceret();glPopMatrix();glDisable(GL_COLOR_MATERIAL);

glutSwapBuffers();}

Page 11: Aris Mbajeng Wahyu Prasiska-100533402635

void keyboard(unsigned char key, int x, int y){if(key == 's')

z += 4;

else if(key == 'w')z -= 4;

else if(key == 'x'){ sudut += 10;

xr=1;yr=0;

zr=0;}else if(key == 'a'){sudut -= 10;

xr=0;yr=1;

zr=0;}else if(key == 'z'){sudut -= 10;

xr=0;yr=0;

zr=1;}

}

void update(int value){glutPostRedisplay();glutTimerFunc(50, update, 0);

}

void main(int argc, char **argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH |

GLUT_RGBA);glutInitWindowPosition(100, 100);glClearColor(1, 1, 1, 0);glutInitWindowSize(w, h);glutCreateWindow("solid");glutDisplayFunc(renderScene);glutReshapeFunc(resize);init();glutTimerFunc(0, update, 0);glutKeyboardFunc(keyboard);glutMainLoop();

}

Fungsi berikut:glEnable(GL_COLOR_MATERIAL);

…………glDisable(GL_COLOR_MATERIAL);

Merupakan fungsi untuk menghidupkan/memunculkan tampilan warna berdasarkan parameter warna dari benda tersebut yakni berdasarkan parameter dari glColor3f();Sedangkan sebelumnya hanya digunakan glEnable(GL_LIGHTING) pada fungsi initSehingga efek pencahayaan bersifat menyeluruh dan menyebabkan semua obyek memiliki warna serupa.Hal ini disebabkan warna yang dipakai adalah warna dari cahaya datang.