الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عاجل _ عمل دوران لسياره

بدأه ميلاد جديد في 4 يونيو 2009 · 2 رد · 927 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

كيف حالكم جميعا إن شاء الله دائمــاً بخير.. ؟

عندي سياره تمشي من اليسار الى اليمين وعند الفراغ( اللفه ) تلف أي تأخذ المنعطف ثم تكمل مشيها من اليمين لليسار

كيف أعمل ذلك

أرجوكم سااااااااااااااعدوني وبأسرع وقت :S

وهذا هو البرنامج

#include <GL/glut.h>
#include <stdlib.h>
#include <math.h>
float rotTheta=0.0;
float trans=-200.0;

void init(void)
{   glClearColor(0.8,0.8,1.0,0.0);
    glMatrixMode(GL_MODELVIEW); 
    glOrtho(-200.0,200.0,-200.0,200.0,-200.0,200.0);
}
void Graph (void)
{ glClear(GL_COLOR_BUFFER_BIT);    
 glColor3f(0.7, 0.8, 0.3);

          glBegin(GL_POLYGON);
glColor3f(1.0,0.0, 0.0);


glVertex2i(-200,90);
glVertex2i(-200,95);
glVertex2i(-200,100);
glVertex2i(160,100);
glVertex2i(165,95);
glVertex2i(165,90);
         glEnd();
   glFlush();
glPushMatrix();
 glRotatef(-rotTheta,0,0,1);
 glTranslatef(trans,0,0);
   glBegin(GL_POLYGON);
glColor3f(0.0,1.0, 1.0);
 glVertex2i(20,120);
 glVertex2i(20,130);
 glVertex2i(26,130);
 glVertex2i(26,135);
  glVertex2i(36,135);
   glVertex2i(36,130);
   glVertex2i(42,130);
   glVertex2i(42,120);
   glVertex2i(39,120);
   glVertex2i(39,115);
    glVertex2i(36,115);
  glVertex2i(36,120);
   glVertex2i(29,120);
    glVertex2i(29,115);
     glVertex2i(26,115);
   glVertex2i(26,120);


         glEnd();
   glPopMatrix();
   glutSwapBuffers();
   //glFlush();

}
void rotateHex(void) 
{ 
 rotTheta +=0.2;
 if (rotTheta >180)
  rotTheta=0;
 glutPostRedisplay();

}

void transTheta(void)
{      trans +=0.2;
 if(trans==50)
trans=0;

 glutPostRedisplay();
}

void mouse( int button , int state , int x, int y )
{
 switch (button) {
 case GLUT_LEFT_BUTTON:
  if(state==GLUT_DOWN)
   glutIdleFunc(transTheta);
  //glutIdleFunc(NULL);
  break ;
 case GLUT_RIGHT_BUTTON:
  if ( state==GLUT_DOWN)
   //glutIdleFunc(rotateHex);
   glutIdleFunc(NULL);
  break;
 default:
  break;
 }
}






int main(int argc, char **argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_DOUBLE |GLUT_RGB );
 glutInitWindowPosition(50,100);
 glutInitWindowSize(500,500);
    glutCreateWindow("Animation Program");
 init();
glutDisplayFunc(Graph);
 glutMouseFunc(mouse);
 //glutIdleFunc(rotateHex);
 //glutIdleFunc(transTheta);

 glutMainLoop();
 return 0;

}
#3

بما أن السؤال مكرر أرجو دمج الموضوعين مع بعض

/index.ph...mp;#entry978755

مواضيع مشابهة