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

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

Работа добавлена на сайт bukvasha.net: 2015-10-25

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024





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

им. Т.Г.Шевченко
Контрольная работа №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();

}
Результаты
for_third_lab.jpg

1. Кодекс и Законы Эмпиризм и гносеология Френсиса Бекона
2. Реферат на тему Diabetes Essay Research Paper Each year 30000
3. Курсовая Технология изготовления блюда
4. Реферат Девальвация и ревальвация в экономике кризисных периодов
5. Курсовая Контроль в высшей школе
6. Реферат Образование Киевской Руси в отечественной и зарубежной историографии
7. Реферат Гиповитаминоз и его диетотерапия
8. Реферат Обработка металлов давлением 3
9. Доклад Дирижер
10. Статья Контроль и сокращение интернет-трафика