2015-11-08 34 views
-2

[enter image description here]如何在Open GL的足球形象,而不使用內置的命令變換(的glTranslatef,glrotatef,glscalef)

任何一個可以幫助我的決策是經過改造的對象(平移,旋轉,縮放)在2D而不使用內置的命令用於轉化(的glTranslatef,glrotatef,glscalef)

+0

使經由對象transformaton?轉換不能從無到有構成對象。你需要一些可以先改變的東西。那麼你能詳細說說你需要什麼嗎? – derhass

+0

謝謝.....但它完成了 –

回答

0
#include<GL\glut.h> 

包括

空隙molana_football();

INT主(INT的argc,字符* argv的[]){

glutInit(&argc, argv); 

glutInitWindowSize(720, 480); 

glutInitWindowPosition(50, 50); 

glutCreateWindow("Football"); 

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 

glutDisplayFunc(molana_football); 

glClearColor(0.0, 0.0, 0.0, 0.0); 

gluOrtho2D(0, 640, 0, 480); 

glutMainLoop(); 
return 0; 

} 空隙molana_football()

{

glClear(GL_COLOR_BUFFER_BIT); 

float x1, y1, x2, y2; 

float angle; 

double radius = 100 * 1.5; 

x1 = 300 * 1.5, y1 = 200 * 1.5; 

glBegin(GL_TRIANGLE_FAN); 

glColor3f((GLfloat)1.0, (GLfloat)1.0, (GLfloat)1.0); 

for (angle = 1.0f; angle<361.0f; angle += 0.2) 

{ 

    x2 = x1 + sin(angle)*radius; 

    y2 = y1 + cos(angle)*radius; 

    glVertex2i(x2, y2); 

} 
glEnd(); 

glBegin(GL_POLYGON); 

glColor3f((GLfloat)1.0, (GLfloat)0.0, (GLfloat)0.0); 

glVertex2i(300 * 1.5, 200 * 1.5); 

glVertex2i(270 * 1.5, 190 * 1.5); 

glVertex2i(265 * 1.5, 160 * 1.5); 

glVertex2i(300 * 1.5, 150 * 1.5); 

glVertex2i(320 * 1.5, 175 * 1.5); 

glEnd(); 

int tx = 0; int ty = 10; 

glBegin(GL_LINE_LOOP); 


glVertex2i(300 * 1.5 + tx, 190 * 1.5 + ty); 

glVertex2i(320 * 1.5 + tx, 230 * 1.5 + ty); 

glEnd(); 

glBegin(GL_POLYGON); 


glColor3f((GLfloat)0.9, (GLfloat)1.0, (GLfloat)0.0); 

glVertex2i(320 * 1.5, 240 * 1.5); 

glVertex2i(295 * 1.5, 260 * 1.5); 

glVertex2i(310 * 1.5, 290 * 1.5); 

glVertex2i(345 * 1.5, 285 * 1.5); 

glVertex2i(350 * 1.5, 257 * 1.5); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(295 * 1.5 + tx, 250 * 1.5 + ty); 

glVertex2i(270 * 1.5 + tx, 245 * 1.5 + ty); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(270 * 1.5 + tx, 180 * 1.5 + ty); 
glVertex2i(250 * 1.5 + tx, 210 * 1.5 + ty); 

glEnd(); 

glBegin(GL_POLYGON); 

glColor3f((GLfloat)0.0, (GLfloat)0.0, (GLfloat)1.0); 


glVertex2i(250 * 1.5, 220 * 1.5); 

glVertex2i(270 * 1.5, 255 * 1.5); 

glVertex2i(240 * 1.5, 270 * 1.5); 

glVertex2i(215 * 1.5, 250 * 1.5); 


glVertex2i(215 * 1.5, 225 * 1.5); 

glEnd(); 


glBegin(GL_LINE_LOOP); 

glVertex2i(215 * 1.5 + tx, 215 * 1.5 + ty); 

glVertex2i(210 * 1.5 + tx, 160 * 1.5 + ty); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(265 * 1.5 + tx, 150 * 1.5 + ty); 

glVertex2i(235 * 1.5 + tx, 145 * 1.5 + ty); 

glEnd(); 

glBegin(GL_POLYGON); 

glVertex2i(235 * 1.5, 155 * 1.5); 

glVertex2i(210 * 1.5, 170 * 1.5); 

glVertex2i(206 * 1.5, 160 * 1.5); 

glEnd(); 

glBegin(GL_POLYGON); 

glVertex2i(235 * 1.5, 155 * 1.5); 

glVertex2i(245 * 1.5, 125 * 1.5); 

glVertex2i(230 * 1.5, 130 * 1.5); 

glVertex2i(206 * 1.5, 160 * 1.5); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(320 * 1.5 + tx, 165 * 1.5 + ty); 

glVertex2i(350 * 1.5 + tx, 170 * 1.5 + ty); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(350 * 1.5 + tx, 247 * 1.5 + ty); 

glVertex2i(370 * 1.5 + tx, 200 * 1.5 + ty); 

glEnd(); 

glBegin(GL_POLYGON); 

glVertex2i(350 * 1.5, 180 * 1.5); 


glVertex2i(370 * 1.5, 210 * 1.5); 

glVertex2i(395 * 1.5, 190 * 1.5); 

glVertex2i(390 * 1.5, 165 * 1.5); 

glVertex2i(370 * 1.5, 155 * 1.5); 

glEnd(); 


glBegin(GL_LINE_LOOP); 

glVertex2i(370 * 1.5 + tx, 150 * 1.5 + ty); 

glVertex2i(330 * 1.5 + tx, 95 * 1.5 + ty); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(300 * 1.5 + tx, 140 * 1.5 + ty); 

glVertex2i(305 * 1.5 + tx, 110 * 1.5 + ty); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(245 * 1.5 + tx, 115 * 1.5 + ty); 

glVertex2i(290 * 1.5 + tx, 90 * 1.5 + ty); 

glEnd(); 

glBegin(GL_POLYGON); 

glVertex2i(305 * 1.5, 120 * 1.5); 

glVertex2i(330 * 1.5, 105 * 1.5); 

glVertex2i(290 * 1.5, 100 * 1.5); 

glEnd(); 

glBegin(GL_LINE_LOOP); 

glVertex2i(310 * 1.5 + tx, 280 * 1.5 + ty); 

glVertex2i(300 * 1.5 + tx, 290 * 1.5 + ty); 

glEnd(); 

//scaling 

    int sx = 1; int sy = 2; 

    glBegin(GL_LINE_LOOP); 


    glVertex2i(240 * sx*1.5, 135 * sy*1.5); 

    glVertex2i(260 * sx*1.5, 145 * sy*1.5); 

    glEnd(); 

glEnd(); 

glFlush(); 

}