glTranslate(d/f) ابغي اتعامل مع الامر باعتبار انو مثلا راح ارسم سيارة بعتمد على التسلسل يعني لو ابتديت بالبودي تبع السيارة وحبيت ارسم العجلات عند نقطة معينه باستخدام الكرنت ماتركس والبوش والبوب المشكلة الي اواجهها اني مو عارفة ليش اذا احدد النقطة تبع العجلة بمكان تنرسم بمكان وكأن الورود كوردينت بمكان والاحداثيات الي باخذها بمكان تاني، بحط الكود والي يقدر يشرح لي يجزاه الله خير..
#include
#include
#include
const float DEG2RAD = 3.14159/180;
void drawCircle(float radius, float originX, float originY)
{
float vectorY1=originY;
float vectorX1=originX;
int i;
glBegin(GL_TRIANGLES);
for(i=0;i<=360;i++)
{
float angle=i*DEG2RAD;
float vectorX=originX+(radius*(float)sin((double)angle));
float vectorY=originY+(radius*(float)cos((double)angle));
glVertex2d(originX,originY);
glVertex2d(vectorX1,vectorY1);
glVertex2d(vectorX,vectorY);
vectorY1=vectorY;
vectorX1=vectorX;
}
glEnd();
}
void drawCarbody()
{
glColor3f(0,0,0);
glBegin(GL_POLYGON);
glVertex3f(0.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glVertex3f(1.0,1.0,0.0);
glVertex3f(1.0,0.0,0.0);
glEnd();
}
void drawWheel(){
glColor3f(0,1,0);
drawCircle(.5,0,1 );
glColor3f(0,0,1);
drawCircle(.25,0,1 );
}
void Display()
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
//drawingCarbody
glTranslated(1,2,0);
glScalef(8,5,0);
drawCarbody();
glPushMatrix();
glTranslated(0,2,0);
glPushMatrix();
glColor3f(0,1,0);
glTranslated(-.2,0,0);
glScalef(.3,.3,0);
drawCircle(1,0,0);
glPushMatrix();
glFlush();
}
void Reshape(GLint w,GLint h){
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION); /* Select the projection matrix */
glLoadIdentity (); /* Initialise it */
glOrtho(20,-20,20,-20,-1,1);/* The unit cube */
glMatrixMode (GL_MODELVIEW); /* Select the modelview matrix */
// glLoadIdentity (); /* Initialise it */
}
int main(int argc,char **argv){
glutInit(& argc, argv);
//glutInitWindowSize(1000,1000);
glutCreateWindow("CAR" ) ;
glutDisplayFunc(Display) ;
glutReshapeFunc(Reshape) ;
glutMainLoop();
return 0;}