Disini akan dijelaskan bagaimana mengubah posisi objek tanpa harus melakukan click and drag pada objek. Disini kita menggunakan fungsi glutPassiveMotionFunc(motion); untuk menggerakkan objek hanya dengan menggeser posisi pointer. Berikut adalah source code program:
#include "stdlib.h"
#include "stdio.h"
#include "glut.h"
int x=0,y=0,z=0,flag;
int w=480, h=480;
void drawQuad() {
glBegin(GL_POLYGON);
glColor3f(0,0,1);
glVertex2f(-20.,-20.);
glVertex2f(20.,-20.);
glVertex2f(20.,20.);
glVertex2f(-20.,20.);
glEnd();
}
void mouse(int button, int state, int
xmouse, int ymouse){
if(button==GLUT_LEFT_BUTTON
&& state==GLUT_UP)
{
x = xmouse-(w/2);
y = (h/2)-ymouse;
printf("x
= %d\ny = %d \n",x,y);
flag=1;
}
if(button==GLUT_RIGHT_BUTTON
&& state==GLUT_UP)
{
flag=0;
}
}
void motion(int xmouse,int ymouse){
if (flag==1)
{
x=xmouse-(w/2);
y=(h/2)-ymouse;
printf("x = %d\ny = %d
\n",x,y);
}
}
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(1,1,1,1);
glPushMatrix();
glTranslatef(x,y,z);
drawQuad();
glPopMatrix();
glFlush();
}
void timer(int value){
glutPostRedisplay();
glutTimerFunc(50,timer,0);
}
void main (int argc, char **argv){
glutInit(&argc, argv);
glutInitWindowPosition(100,100);
glutInitWindowSize(w,h);
glutCreateWindow("Interaksi
Mouse");
gluOrtho2D(-w/2,w/2,-h/2,h/2);
glutDisplayFunc(renderScene);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutPassiveMotionFunc(motion);
glutTimerFunc(1,timer,0);
glutMainLoop();
} Screenshot Program:










0 comments:
Posting Komentar