السلام عليكم ..
ممكن عاوزه مساعده في الكود ده..
مش راضي يشتغل ..
ممكن حد يشوفلي ايه هوا الغلط..
فكرة الكود ان رجل بعملوا ترانزليت وسكايلنق و روتايشن باستخدام الكيبورد ..
عاوزه مساعده ضروري..
الكود
^
^
^
#include <windows.h>
#include <GL/glut.h>
float tx=0,ty=0;
float sx=1,sy=1;
float xp=0,yp=0;
float angle=0;
int type=1;
void draww(void)
{
// rass
glColor3ub(255,231,204);
glBegin(GL_POLYGON);
glVertex2i (-100,90);
glVertex2i (-140,90);
glVertex2i (-140,50);
glVertex2i (-100,50);
glEnd();
//3en yamen
glPointSize(6);
glBegin(GL_POINTS);
glColor3f(0, 0, 1);
glVertex2i(-110,80);
glEnd();
//3en yasar
glPointSize(6);
glBegin(GL_POINTS);
glColor3f(0, 0, 1);
glVertex2i(-125,80);
glEnd();
//jasm
glColor3ub(0,0,0);
glBegin(GL_LINES);
glVertex2f(-120, 50);
glVertex2f(-120, -150);
glEnd();
//regl ysar
glColor3ub(0,0,0);
glBegin(GL_LINES);
glVertex2f(-120, -150);
glVertex2f(-150, -300);
glEnd();
//regl yamen
glColor3ub(0,0,0);
glBegin(GL_LINES);
glVertex2f(-120, -150);
glVertex2f(-100, -300);
glEnd();
//yad yamen
glColor3ub(0,0,0);
glBegin(GL_LINES);
glVertex2f(-120, 0);
glVertex2f(-50, -50);
glEnd();
//yad yasar
glColor3ub(0,0,0);
glBegin(GL_LINES);
glVertex2f(-120, 0);
glVertex2f(-200, -50);
glEnd();
}
void transformation()
{
glTranslatef(tx,ty,0);//translation on x and y
glTranslatef(xp,yp,0);
glScalef(sx,sy,0);//scaling on x and y
glTranslatef(-xp,-yp,0);
glTranslatef(xp,yp,0);
glRotatef(angle,0,0,1);//rotation on z
glTranslatef(-xp,-yp,0);
}
void draw()
{
transformation();
}
void display()
{
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-100,100,-100,100);
draw();
glutReshapeWindow(400,400);
glutSwapBuffers();
}
void Keyboard(unsigned char key,int x,int y)
{
if(key=='R'||key=='r')
type=3;
else
if(key=='S'||key=='s')
type=2;
else
if(key=='T'||key=='t')
type=1;
}
void Translate(int key)
{
if (key==GLUT_KEY_UP)
ty=ty+1.7;
else
if (key==GLUT_KEY_DOWN)
ty=ty-1.7;
else
if (key==GLUT_KEY_LEFT)
tx=tx-1.7;
else
if (key==GLUT_KEY_RIGHT)
tx=tx+1.7;
}
void Scale(int key)
{
if (key==GLUT_KEY_UP)
sy=sy+0.1;
else
if (key==GLUT_KEY_DOWN)
sy=sy-0.1;
else
if (key==GLUT_KEY_LEFT)
sx=sx-0.1;
else
if (key==GLUT_KEY_RIGHT)
sx=sx+0.1;
}
void Rotate(int key)
{
if (key==GLUT_KEY_LEFT)
angle=angle+5;
else
if (key==GLUT_KEY_RIGHT)
angle=angle-5;
}
void Special(int key,int x,int y)
{
if(type==1)
Translate(key);
else
if(type==2)
Scale(key);
else
if(type==3)
Rotate(key);
if(key==GLUT_KEY_F1)
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
else
if(key==GLUT_KEY_F2)
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
glutPostRedisplay();
}
void main()
{
glutInitWindowSize(1000,1000);
glutInitDisplayMode(GLUT_RGB);
glutCreateWindow("Points");
glutDisplayFunc(display);
glutKeyboardFunc(Keyboard);
glutSpecialFunc(Special);
glClearColor(1.0,1.0, 1.0, 0.0);
glOrtho(-500.0, 500.0, -500.0, 500.0, 0.0, 1.0);
glutMainLoop();
}