GRAFIKA KOMPUTER
MODUL 5
“INTERAKSI OBJEK 2D (MOUSE FUNCTION)”
PENYUSUN :
Source Code
#include <GL/glut.h>
#endif
#include <stdlib.h>
Hasil
Penjelasan
Program ini dapat mengubah skala objek secara interaktif menggunakan interaksi drag. Ketika
tombol kanan ditekan dan didrag maka objek akan membesar dan mengecil sesuai dengan arah
kursor mouse. Ketika kursor mouse menjauh maka objek akan menjadi semakin besar, sebaliknya
jika kursor mouse mendekat ke arah objek maka objek akan semakin mengecil.
2. Buatlah program untuk deteksi DOUBLE CLICK, ketika DOUBLE CLICK object yang dipilih
skalanya menjadi 1.5, sedangkan untuk DOUBLE CLICK berikutnya Ukuran object tersebut
kembali seperti semula. Buatlah Kesimpulan dan Algoritmanya.
Source Code
float x=1,y=1,z=0;
int flag=0,flg;
void drawQuad() {
glBegin(GL_QUADS);
glColor3f(0,1,0);
glVertex2f(-30,-30);
glVertex2f(30,-30);
glVertex2f(30,30);
glVertex2f(-30,30);
glEnd();
}
void mouse(int button, int state, int xmouse, int ymouse){
if(flg==0){
if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN){
flag++;
if(flag==2){
flg=3;
x=1.5;
y=1.5;
flag=3;
}
}
}
if (flg==3){
if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN){
flag--;
if(flag==0){
x=1;
y=1;
flg=0;
}
}
}
}
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScalef(x,y,z);
drawQuad();
glPopMatrix();
glFlush();
}
void timer(int value){
glutPostRedisplay();
glutTimerFunc(50,timer,0);
}
int main (int argc, char **argv){
glutInit(&argc, argv);
glutInitWindowPosition(100,100);
glutInitWindowSize(480, 480);
glutCreateWindow("Tugas 2 modul 5");
gluOrtho2D(-100, 100,-100, 100);
glutDisplayFunc(renderScene);
glutMouseFunc(mouse);
glutTimerFunc(1,timer,0);
glutMainLoop();
}
Hasil
Penjelasan
Fungsi dari program ini adalah untuk membuat agar objek berinteraksi dengan mouse
Ketika mouse di klik dua kali makan objek akan membesar 1.5 dan objek akan kembali seperti
semula ketika di klik lagi dua kali
Fungsi unutk mendefinisikan double click terdapat pada fungsi mouse. Pada fungsi ini terdapat
fungsi counter increment untuk membuat objek menjadi lebih besar atau menjadi lebih kecil