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