Контрольная работа по предмету "Информатика, программирование"


Построение геометрических тел с помощью библиотеки OpenGL

Приднестровский Государственный Университет


им. Т.Г.Шевченко


Контрольная работа №3


Тема: «Построение геометрических тел с помощью библиотеки OpenGL».


Тирасполь, 2010 г.



1. Цель: Изучить команды поворота, переноса, масштабирования и построения основных примитивов графической библиотеки OpenGL.


2. Задача: Написать программу, рисующую проволочный чайник. При нажатии на кнопки w, s, a, d, [, [ он должен поворачиваться вокруг осей X, Y, Z.


3. Методика решения: Строим проволочный чайник. Определяем кнопки. При нажатии на них изменяем соответствующие углы и перерисовываем чайник.


Решение


#include <GL/glut.h>


#include <stdlib.h>


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();


}


Результаты




Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :