ПриднестровскийГосударственный Университет
им.Т.Г.Шевченко
Контрольнаяработа №1
Тема: «Основныеконструкции библиотеки OpenGL».
Тирасполь, 2010 г.
1. Цель: Изучить основныеконструкции библиотеки OpenGL.
2. Задача: Построитьграфик функций y=sin(x)
3. Методика решения: Определяемобласть значений функции и строим график по точкам, соединяя их отрезками.
Решение:
#include
#include
#include
GLint Width = 512, Height= 512; //начальные размеры окна
//Функция вырисовки наэкране
void Display()
{
glClearColor(1,1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(0,0, 0);
glBegin(GL_LINES);
glVertex2d(0,0);
glVertex2d(10,0);
glVertex2d(0,-1.5);
glVertex2d(0,1.5);
glEnd();
glColor3d(0,0, 1);
glBegin(GL_LINE_STRIP);
for (double i= 0; i
glVertex2d(i,sin(i));
glEnd();
glFinish();
}
//Функция вызывается приизменении размеров окна
voidReshape(GLint w, GLint h)
{
Width = w;
Height = h;
// устанавливаем размерыобласти отображения
glViewport(0, 0, w, h);
// отрографическаяпроекция
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2,12, -2, 2, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// Функция обработкисообщений с клавиатуры
voidKeyboard(unsigned char key, int x, int y)
{
#define ESCAPE'\033'
if (key ==ESCAPE)
exit(0);
}
// Главный цикл приложения
void main(intargc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(Width,Height);
glutCreateWindow(«Sin(x)»);
glutDisplayFunc(Display);
glutReshapeFunc(Reshape);
glutKeyboardFunc(Keyboard);
glutMainLoop();
}
Результаты:
/>