ΠΡΠΈΠ΄Π½Π΅ΡΡΡΠΎΠ²ΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΈΠΌ. Π’. Π. Π¨Π΅Π²ΡΠ΅Π½ΠΊΠΎ ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° № 3
Π’Π΅ΠΌΠ°: «ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ΅Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL».
Π’ΠΈΡΠ°ΡΠΏΠΎΠ»Ρ, 2010 Π³.
1. Π¦Π΅Π»Ρ: ΠΠ·ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ°, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL.
2. ΠΠ°Π΄Π°ΡΠ°: ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΈΡΡΡΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ»ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ½ΠΈΠΊ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ w, s, a, d, [, [ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠ΅ΠΉ X, Y, Z.
3. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ: Π‘ΡΡΠΎΠΈΠΌ ΠΏΡΠΎΠ²ΠΎΠ»ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ½ΠΈΠΊ. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° Π½ΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ³Π»Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ½ΠΈΠΊ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
#include
#include
GLint Width = 512, Height = 512;
GLdouble alpha = 0, betta = 0, gamma = 0; // ΡΠ³Π»Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°
//Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅
void Display ()
{
glClearColor (1, 1, 1, 1);
glClear (GL_COLOR_BUFFER_BIT);
glColor3d (0, 0, 0);
glPushMatrix ();
glTranslated (5, 5, 0);
glRotated (5*alpha, 1, 0, 0);
glRotated (5*betta, 0, 1, 0);
glRotated (5*gamma, 0, 0, 1);
glutWireTeapot (2);
glPopMatrix ();
glFinish ();
}
//Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠ½Π°
void Reshape (GLint w, GLint h)
{
Width = w;
Height = h;
// ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
glViewport (0, 0, w, h);
// ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, 10, 0, 10, -10, 10);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
// Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
void Keyboard (unsigned char key, int x, int y)
{
#define ESCAPE 27
if (key == ESCAPE)
exit (0);
if (key == `w')
alpha += 0.1;
if (key == `s')
alpha -= 0.1;
if (key == `a')
betta += 0.1;
if (key == `d')
betta -= 0.1;
if (key == `[`)
gamma += 0.1;
if (key == `]')
gamma -= 0.1;
glutPostRedisplay ();
}
// ΠΠ»Π°Π²Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
void main (int argc, char* argv[])
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_RGB);
glutInitWindowSize (Width, Height);
glutCreateWindow («True Teapot»);
glutDisplayFunc (Display);
glutReshapeFunc (Reshape);
glutKeyboardFunc (Keyboard);
glutMainLoop ();
}
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ