Задание векторных примитивов | MetodPro.ru

Реклама на сайте

Задание векторных примитивов


В OpenGL векторными примитивами являются точки, линии и многоугольники. Они описываются в терминах их вершин – совокупностей координат. Как мы знаем, в разных координатных системах вершина может описываться парой, тройкой или четверкой координат. Смысл используемых понятий точки, линии и многоугольника отличается от математического. Это связано с ограниченными возможностями машинных вычислений, в частности с округлением и растеризацией.

Под термином прямая имеется ввиду отрезок прямой, а многоугольник обязательно должен быть выпуклым. Область называется выпуклой областью, если отрезок, соединяющий любые две ее точки, полностью находится внутри этой области.

Предоставляемый библиотекой набор примитивов является достаточным для создания сложных моделей. Любые кривые или поверхности могут быть получены путем аппроксимации.

В прикладных программах, использующих OpenGL, каждый геометрический объект описывается как упорядоченный набор вершин. Вершины задаются командой

glVertex[2 3 4][s i f d](координаты)

glVertex[2 3 4][s i f d][v](координаты).

Набор вершин ограничивается операторными скобками glBegin(mode) и glEnd(), а тип объекта, который он определяет, задается параметром  mode.

 

glBegin();

Команды задания вершин и их атрибутов, например цвета

glEnd;

mode – вид примитива, может принимать следующие значения:

  • GL_POINTS – каждая вершина задает точку. Вершина n задает точку n. Всего будет выведено N точек;
  • GL_LINES – две вершины образуют отрезок прямой линии. Вершины 2n-1 и 2n задают линию n. Всего будет выведено N/2 линий. Если число вершин нечетно, то последняя игнорируется;
  • GL_LINE_STRIP - последовательность соединенных отрезков прямых, называемых полилинией. Вершины n и n+1 задают линию n. Всего будет выведено N-1 линий;
  • GL_LINE_LOOP - замкнутая полилиния. Вершины n и n+1 задают ли­нию n. Вершины N и 1 задают последний отрезок полилинии. Всего бу­дет выведено N линий;
  • GL_TRIANGLES - тройка вершин образует независимый треугольник. Вершины 3n-2, 3n-1 и Зn задают треугольник n. Если число вершин не кратно 3, то оставшиеся (одна или две) вершины игнорируются. Всего отобразится N/3 треугольников;
  • GL_TRIANGLE_STRIP - связанные треугольники. Треугольник задается каждой вершиной, начиная с третьей. Для нечетного n вершины n, n+1 и n+2 задают треугольник n. Для четной вершины n вершины n+1, n и n+2 задают треугольник n. Всего будет выведено N - 2 треугольников;
  • GL_TRIANGLE_FAN - веер треугольников. Треугольник задается каждой вершиной, начиная с третьей. Вершины n, n+1 и n+2 задают треугольник n. Всего будет выведено N-2 треугольников;
  • GL_QUADS - четверка вершин задает независимый четырехугольник. Вершины 4n-3, 4n-2, 4n-1 и 4n задают четырехугольник n. Если число вершин не кратно 4, то оставшиеся (одна. две или три) вершины игнорируется. Всего нарисуется N/4 четырехугольников;
  • GL_QUAD_STRIP - связанные четырехугольники. Четырехугольник задается  для  каждой, кроме двух первых, пары вершин. Вершины 2n-1, 2n, 2n+2 и 2n+1 задают четырехугольник n. Всего отобразится (N-2)/2 четырехугольников. Заметим, что порядок сборки связных четырехугольников отличается от порядка, применяемого для независимых четырехугольников;
  • GL_POLYGON – вершины от 1 до N задают один многоугольник.


Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем