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