Визуализация в научных исследованиях. Ечкина Е.Ю - 44 стр.

UptoLike

Рубрика: 

Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su
44
glutMouseFunc() определяет обработчика команд от мыши, а glutIdleFunc() задает
функцию, которая будет вызываться каждый раз, когда нет событий от пользователя.
Контроль всех событий происходит внутри бесконечного цикла в функции void
glutMainLoop(void) которая обычно вызывается в конце любой программы,
использующей GLUT.
Вершины и примитивы
Определение атрибутов вершины
Под вершиной понимается точка в трехмерном пространстве, координаты которой
можно задавать следующим образом:
void glVertex[2 3 4][s i f d](type coords)
void glVertex[2 3 4][s i f d]v(type *coords)
Координаты точки задаются максимум четырьмя значениями: x, y, z, w, при этом
можно указывать два (x,y) или три (x,y,z) значения, а для остальных переменных в
этих случаях используются значения по умолчанию: z=0, w=1. Как уже было сказано
выше, число в названии команды соответствует числу явно задаваемых значений, а
последующий символ – их типу.
Координатные оси расположены так, что точка (0,0) находится в левом нижнем углу
экрана, ось x направлена влево, ось y- вверх, а ось z- из экрана. Это расположение осей
мировой системы координат, в которой задаются координаты вершин объекта, другие
системы координат будут рассмотрены ниже.
Однако чтобы задать какую-нибудь фигуру одних координат вершин недостаточно, и
эти вершины надо объединить в одно целое, определив необходимые свойства. Для
этого в OpenGL используется понятие примитивов, к которым относятся точки, линии,
связанные или замкнутые линии, треугольники и так далее. Задание примитива
происходит внутри командных скобок:
void glBegin(GLenum mode)
void glEnd(void)
Параметр mode определяет тип примитива, который задается внутри и может
принимать следующие значения:
GL_POINTS каждая вершина задает координаты некоторой точки.
GL_LINES каждая отдельная пара вершин определяет отрезок; если задано
нечетное число вершин, то последняя вершина игнорируется.
GL_LINE_STRIP каждая следующая вершина задает отрезок вместе с
предыдущей.
GL_LINE_LOOP отличие от предыдущего примитива только в том, что
последний отрезок определяется последней и первой вершиной, образуя
замкнутую ломаную.
GL_TRIANGLES каждая отдельная тройка вершин определяет треугольник;
если задано не кратное трем число вершин, то последние вершины
игнорируются.
GL_TRIANGLE_STRIP каждая следующая вершина задает треугольник вместе
с двумя предыдущими.
GL_TRIANGLE_FAN треугольники задаются первой и каждой следующей
парой вершин (пары не пересекаются).
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»


glutMouseFunc() определяет обработчика команд от мыши, а glutIdleFunc() задает
функцию, которая будет вызываться каждый раз, когда нет событий от пользователя.
Контроль всех событий происходит внутри бесконечного цикла в функции void
glutMainLoop(void) которая обычно вызывается в конце любой программы,
использующей GLUT.
Вершины и примитивы
Определение атрибутов вершины
Под вершиной понимается точка в трехмерном пространстве, координаты которой
можно задавать следующим образом:
       void glVertex[2 3 4][s i f d](type coords)
       void glVertex[2 3 4][s i f d]v(type *coords)
Координаты точки задаются максимум четырьмя значениями: x, y, z, w, при этом
можно указывать два (x,y) или три (x,y,z) значения, а для остальных переменных в
этих случаях используются значения по умолчанию: z=0, w=1. Как уже было сказано
выше, число в названии команды соответствует числу явно задаваемых значений, а
последующий символ – их типу.
Координатные оси расположены так, что точка (0,0) находится в левом нижнем углу
экрана, ось x направлена влево, ось y- вверх, а ось z- из экрана. Это расположение осей
мировой системы координат, в которой задаются координаты вершин объекта, другие
системы координат будут рассмотрены ниже.
Однако чтобы задать какую-нибудь фигуру одних координат вершин недостаточно, и
эти вершины надо объединить в одно целое, определив необходимые свойства. Для
этого в OpenGL используется понятие примитивов, к которым относятся точки, линии,
связанные или замкнутые линии, треугольники и так далее. Задание примитива
происходит внутри командных скобок:
       void glBegin(GLenum mode)
       void glEnd(void)
Параметр mode определяет тип примитива, который задается внутри и может
принимать следующие значения:
       GL_POINTS каждая вершина задает координаты некоторой точки.
       GL_LINES каждая отдельная пара вершин определяет отрезок; если задано
        нечетное число вершин, то последняя вершина игнорируется.
       GL_LINE_STRIP каждая следующая вершина задает отрезок вместе с
        предыдущей.
       GL_LINE_LOOP отличие от предыдущего примитива только в том, что
        последний отрезок определяется последней и первой вершиной, образуя
        замкнутую ломаную.
       GL_TRIANGLES каждая отдельная тройка вершин определяет треугольник;
        если задано не кратное трем число вершин, то последние вершины
        игнорируются.
       GL_TRIANGLE_STRIP каждая следующая вершина задает треугольник вместе
        с двумя предыдущими.
       GL_TRIANGLE_FAN треугольники задаются первой и каждой следующей
        парой вершин (пары не пересекаются).
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su            44