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

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

им. Т.Г.Шевченко
Контрольная работа №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. Реферат на тему Tithes Essay Research Paper Better Alternatives Other
3. Контрольная работа Культура делового общения 5
4. Реферат Технология прокатного производства в крупносортном цехе
5. Реферат на тему Wordsworth Essay Research Paper William Wordsworths description
6. Курсовая Учет финансовых результатов от основного вида деятельности
7. Реферат Виды кондиционеров
8. Реферат на тему Модель устойчивой мировой системы
9. Реферат на тему Conformity And Obedience In An Enemy Of
10. Реферат Совокупный спрос 3