ANIMASI OBJECT 2D JOBSHEET PRAKTIKUM 1.

2. ANIMASI OBJECT 2D

1 Rotasi terhadap sumbu z unclockwise Source Code include stdlib.h include glut.h void Persegi { glBegin GL_QUADS ; glVertex2f 0. , 0. ; glVertex2f 0. , 75. ; glVertex2f 105. , 75. ; glVertex2f 105. , 0. ; glEnd ; } void display void { glClear GL_COLOR_BUFFER_BI T ; glColor3f 1. , 0. , 1. ; Persegi ; glRotatef 45 , 10 , 2 , 10 ; glColor3f 0. , 1. , 1. ; Persegi ; glFlush ; } void timer int value { glutPostRedisplay ; glutTimerFunc 60 , timer , ; } void main int argc , char argv { glutInitargc, argv; glutInitDisplayModeGLUT_D EPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100 ,100; glutInitWindowSize640,480 ; glutCreateWindowLatihan animasi prak 3; gluOrtho2D- 320.,320.,-320.,320; glutDisplayFuncdisplay; glutTimerFunc50,timer,10 ; glutMainLoop; } Hasil Penjelasan - Program diatas menggunakan fungsi Rotatef sehingga terlihat seperti berputar berlawanan arah jarum jam. Menggunakan fungsi timer sebagai Inisialisasi dalam penggunaan Timer Function yakni Set unsign millis=50. Yang digunakan untuk mengatur kecepatan rotasi objek. 2 Rotasi terhadap sumbu y Clockwise Source Code include stdlib.h Load library include glut.h Load library glut void Persegi void { glBeginGL_QUADS; glVertex2f0.,0.; glVertex2f0.,40.; glVertex2f100.,40.; glVertex2f100.,0.; glEnd; glFlush; } void display { glClearGL_COLOR_BUFFER_BIT; glRotatef45,0,0,1; Persegi; ... glFlush; } void timer int value { glutPostRedisplay; glutTimerFunc100,timer,0; } void main int argc, char argv { glutInit argc, argv; ... glutInitDisplayMode GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100,100; glutInitWindowSize640,480; glutCreateWindow Latihan Animasi 2D ; gluOrtho2D-320.,320.,- 240.,240.; glutDisplayFuncdisplay; glutTimerFunc100,timer,0; glutMainLoop; } Hasil Penjelasan - Program diatas menggunakan fungsi Rotatef untuk membuat objek berputar dengan parameter 45,0,0,1 maka objek akan berputar sebesar 45 derajat pada sumbu y clockwisearah putar jarum jam. Artinya karena menggunakan parameter x= 0, y=0 maka objek akan berputar tepat ditengah koordinat sumbu x dan y. 3 Rotasi terhadap sumbu x Clockwise Source Code include stdlib.h Load library include glut.h Load library glut void Persegi void { glBeginGL_QUADS; glVertex2f0.,0.; glVertex2f0.,40.; glVertex2f100.,40.; glVertex2f100.,0.; glEnd; glFlush; } void display { glClearGL_COLOR_BUFFER_BIT; glRotatef45,0,1,0; Persegi; ... glFlush; } void timer int value { glutPostRedisplay; glutTimerFunc200,timer,0; } void main int argc, char argv { glutInit argc, argv; ... glutInitDisplayMode GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100,100; glutInitWindowSize640,480; glutCreateWindow Latihan Animasi 2D ; gluOrtho2D-320.,320.,- 240.,240.; glutDisplayFuncdisplay; glutTimerFunc200,timer,0; glutMainLoop; } Hasil Penjelasan - Program diatas hampir sama dengan latihan sebelumnya, hanya saja perbedaannya adalah merotasi objek pada sumbu x clockwise. Rotasinya dapat menggunakan glutTimerFunc200,timer,0;fungsi ini digunakan untuk mengatur kecepatan rotasi objek. Kemudian karena menggunakan fungsi rotate dengan parameter 45, 0, 1, 0, yang artinya objek akan berotasi sebesar 45 derajat pada sumbu x=0, y=1, z=0, sehingga hasilnya akan tampak seperti pada gambar. 4 Timer Translasi Source Code include stdlib.h Load library include glut.h Load library glut int x=1; void Draw void { glBeginGL_QUADS; glVertex2f0.,0.; glVertex2f0.,40.; glVertex2f80.,40.; glVertex2f80.,0.; glEnd; glFlush; } void renderScene { glClearGL_COLOR_BUFFER_BIT; glPushMatrix; if x200 { x+=4; glTranslatefx,0,0; Draw; } glPopMatrix; glFlush; } void timer int value { glutPostRedisplay; glutTimerFunc100,timer,0; } void main int argc, char argv { glutInit argc, argv; ... glutInitDisplayMode GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100,100; glutInitWindowSize640,480; glutCreateWindow LATIHAN ANIMASI 2D ; gluOrtho2D-320.,320.,- 240.,240.; glutDisplayFuncrenderScene; glutTimerFunc100,timer,0; glutMainLoop; } Hasil Penjelasan - Pada program diatas, menggunakan perkondisian if int x=0; void timer int value{ if x200{ x+=4; } yang artinya, jika nilai xlebih kecil dari 200 maka x ditambah dengan 4, yang digunakan untuk perpindahan objek hingga akhir windowsfungsinya dalam mengatur jarak jalan segiempat tersebut. Sedangkan untuk menampilkan fungsi looping menggunakan glutPostRedisplay; sehingga objek akan bergerak secara terus menerus hingga menghilang karena sudah mencapai batas perkondisian. 5 Timer Translasi terhadap sumbu y Source Code include stdlib.h Load library include glut.h Load library glut int y=0; void Draw void { glBeginGL_QUADS; glVertex2f0.,0.; glVertex2f0.,40.; glVertex2f100.,40.; glVertex2f100.,0.; glEnd; glFlush; } void renderScene { glClearGL_COLOR_BUFFER_BIT; glPushMatrix; if y-200 { y+=4; glTranslatef0,-y,0; Draw; } glPopMatrix; glFlush; } void timer int value { glutPostRedisplay; glutTimerFunc150,timer,0; } void main int argc, char argv { glutInit argc, argv; ... glutInitDisplayMode GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100,100; glutInitWindowSize640,480; glutCreateWindow LATIHAN ANIMASI 2D ; gluOrtho2D-320.,320.,- 240.,240.; glutDisplayFuncrenderScene; glutTimerFunc150,timer,0; glutMainLoop; } Hasil Penjelasan - Program diatas hampir sama dengan program sebelumnya , hanya saja perbedaanya terletak pada pergerakan objek yang bergerak ke bawah. Pada script menggunakan inisialisasi nilai sumbu y yang negative, yang artinya, pergerakan objek akan berjalan ke titik koordinat sumbu y negative bawah Pada script menambahkan penggunaan fungsi glPopMatrix; yang akan memanggil fungsi yang disimpan dalam glPushMatrix 6 Timer Translasi terhadap sumbu z Source Code include stdlib.h Load library include glut.h Load library glut int z=1; void Draw void { glBeginGL_QUADS; glVertex2f0.,0.; glVertex2f0.,20.; glVertex2f80.,20.; glVertex2f80.,0.; glEnd; glFlush; } void renderScene { glClearGL_COLOR_BUFFER_BIT; glPushMatrix; if z200 { z+=4; glTranslatef0,0,z; Draw; } glPopMatrix; glFlush; } void timer int value { glutPostRedisplay; glutTimerFunc150,timer,0; } void main int argc, char argv { glutInit argc, argv; ... glutInitDisplayMode GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA; glutInitWindowPosition100,100; glutInitWindowSize640,480; glutCreateWindow LATIHAN ANIMASI 2D ; gluOrtho2D-320.,320.,- 240.,240.; glutDisplayFuncrenderScene; glutTimerFunc150,timer,0; glutMainLoop; } Hasil Penjelasan - Pada program datas juga menggunakan prinsip yang sama dengan program sebelumnya. Program diatas menggunakan titik z untuk membentuk objek. Menggunakan perkondisian if jika inisialisasi z 200 maka z ditambah 4. Pada hasil tidak terlihat karena pada intinya dalam system koordinat yang ditampilkan hanya titik x dan y, sedangkan titik z tidak ditampilkan , sehinnga tidak muncul objek appun, tidak jarang juga jika menggunakan parameter sumbu x,y,z , nilai z selalu menggunakan nilai 0.

C. TUGAS ASISTENSI 1. Tugas Asistensi 1