Klik iklan untuk menghilangkan

Selasa, 30 April 2013

Membuat Objek Bergerak tanpa melakukan click and drag


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