- Pada program diatas menggunakan fungsi GL_QUADS untuk membangun objek segi
empat. Saya menggunakan 2 fungsi drawQuads, yang akan membangun 2 buah objek dengan warna berbeda. Menggunakan fungsi Translatef juga untuk posisi objek yang
beragam. Menggunakan Rotatef untuk mengubah posisi objek. Menggunakan glColor3f untuk pewarnaan objek.
2. Tugas Asistensi 2 Source Code
include stdlib.h
include glut.h
int x,y;
void guide
{ glBegin GL_QUADS;
glVertex2i-1, 250; a
glVertex2i1, 250; b
glVertex2i1, -250; c
glVertex2i-1, -250; d
glVertex2i250, -1; a
glVertex2i250, 1; b
glVertex2i-250, 1; c
glVertex2i-250, -1; d
glEnd; }
void kotak
{ glBegin GL_QUADS;
glVertex2i-20, 240; a
glVertex2i20, 240; b
glVertex2i20, 200; c
glVertex2i-20, 200; d
glEnd; }
void timer
int value
{ if
x200 {
x += 10; glTranslatef 10,-
10,0; }
else if
x 400 {
x += 10; glTranslatef -10,-
10,0; }
else if
x 600 {
x += 10; glTranslatef -
10,10,0; }
else if
x 800 {
x += 10; glTranslatef
10,10,0; }
else if
x = 790 {
x=0; }
glutPostRedisplay; glutTimerFunc500,timer,0;
} void
render {
glClearGL_COLOR_BUFFER_BI T;
glPushMatrix; guide;
glTranslatef10,-10,0; kotak;
glPopMatrix; glFlush;
} void
main int
argc, char
argv
{ glutInitargc, argv;
glutInitDisplayModeGLUT_DE PTH | GLUT_SINGLE |
GLUT_RGBA; glutInitWindowPosition150,
150; glutInitWindowSize640,
480; glutCreateWindow
ASISTENSI 2
; gluOrtho2D-640.,640.,-
320.,320.; glutDisplayFuncrender;
glutTimerFunc500,timer,0; glutMainLoop;
}
Hasil
Penjelasan : -
Program diatas menggunakan fungsi GL_QUADS untuk membentuk guide arah objek bergerak. Menggunakan fungsi kotak untuk membentuk objeknya. Menggunakan
fungsi timer dengan perkondisian jika nilai x kurang dari 200 maka x ditambah 10, hal ini yang mengakibatkan trerjadinya pergerakan objek. Menggunakan fungsi
Translatef juga. Kemudian perkondisian selanjutnya dideklarasikan jika x kurang dari 400 maka x ditambah 10 dengan menerapkan fungsi glTranslatef -10,10,0. Kondisi
selanjutnya jika kurang dari 600 maka sama menggunakan fungsi glTranslatef pada kondisi x400. Untuk kondisi selanjutnya juga sama pendeklarasiannya, hingga jika
nilai x = 790 maka x=0. Menggunakan timer 500 untuk kecepatan geraknya.
3. Tugas Asistensi 3 Source Code
include stdlib.h
include glut.h
include math.h
define PI 3.1415926535
float sudut = 0;
int i,n;
void lingkaran
int radius,
int jumlah_titik,
int xtengah,
int ytengah
{ glBeginGL_POLYGON;
for i=0;i=360;i++
{ float
sudut=i2PIjumlah_titik; float
x=xtengah+radiuscossudut; float
y=ytengah+radiussinsudut; glVertex2fx,y;
glColor3f0., 1., 1.; }
glEnd; }
Jarum kecil void
kecil {
glBeginGL_QUADS; glColor3f1.,1.,0.;
kuning glVertex2f5.,125.;
glVertex2f5.,0.; glVertex2f-5.,0.;
glVertex2f-5.,125.; glEnd;
} Jarum panjang
void panjang
{ glBeginGL_QUADS;
glColor3f1.,1.,1.; putih
glVertex2f5.,175.; glVertex2f5.,0.;
glVertex2f-5.,0.; glVertex2f-5.,175.;
glEnd; }
void detik
{ glBeginGL_QUADS;
glColor3f0.,1.,0.; glVertex2f5.,200.;
glVertex2f5.,0.; glVertex2f-5.,0.;
glVertex2f-5.,200.; glEnd;
} titik jam
void angka
float jarak,
float x,
float y
{ glPointSize10;
glBeginGL_POINTS; glColor3f0.,0.,0.;
for n=0;n360;n+=90
glVertex2fjarak float
sinnPI180. 0+x,jarak
float cosnPI180.0+y
; glEnd;
} titik menit
void menit
float jarak,
float x,
float y
{ glPointSize4;
glBeginGL_POINTS; glColor3f0.,0.,0.;
for n=0;n360;n+=6
glVertex2fjarak float
sinnPI180. 0+x,jarak
float cosnPI180.0+y
; glEnd;
} void
renderScene void
{ glClearGL_COLOR_BUFFER_BIT;
warna lingkaran glPushMatrix;
glColor3f1.,0.,0.;
lingkaran260,100,0,0; angka230.,0.,0.;
menit230.,0.,0.; glPopMatrix;
panah detik glPushMatrix;
glRotatefsudut,0,0,1; detik;
glPopMatrix; panah menit
glPushMatrix; glRotatefsudut60,0,0,1;
panjang; glPopMatrix;
panah jam glPushMatrix;
glRotatefsudut720,0,0,1; kecil;
glPopMatrix; glColor3f0,0,0;
lingkaran10,50,0,1; glFlush;
} void
timer int
value {
sudut-=6; glutPostRedisplay;
glutTimerFunc1000,timer,0; }
void main
int argc,
char argv
{ glutInitargc, argv;
glutInitDisplayModeGLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA;
glutInitWindowPosition150, 150;
glutInitWindowSize640, 480;
glutCreateWindow ASISTENSI 3
; gluOrtho2D-640.,640.,-
320.,320.; glutDisplayFuncrenderScene;
glutTimerFunc1,timer,0; glutMainLoop;
}
Hasil
Penjelasan -
Pada program diatas menngunakan fungsi matematika untuk perhitungan arah jam. Terdapat banyak fungsi yang menggambarkan objek-objek yang akan dibentuk untuk
menyusun jam analog ini. Menggunakan perulangan for untuk membuat jam
bergerakberputar secara nyata. Pendeklarasian pembentukan panah jam dari jam menit, detik dengan warna berbeda dan panjang yang berbeda. Menggunakan fungsi
timer untuk pergerakan panah. Mendeklarasikan titik titik yang digunakan sebagai titik menit dari jam analog.
4. Tugas Asistensi 4 Source Code