Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1blok.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.83 Mб
Скачать

8. Основные графические примитивы. Базовый примитив "вершина" и формы ее представления.

9. Основные графические примитивы. Базовый примитив "отрезок" и формы ее представления.

Среди специалистов в области компьютерной графики не прекращаются дебаты вокруг вопроса, носящего, казалось бы, совершенно схоластический характер: "Что считать прими-

тивом?" и "Какие примитивы следует поддерживать в составе API?" Скорее всего спорщики никогда не придут к единому мнению. Минималисты считают, что примитивами должны быть только такие объекты, которые в большинстве существующих графических систем формируются аппаратно. Кроме того, набор примитивов должен обладать свойством ортогональности, т.е. ни один из элементов этого набора нельзя было бы получить из других. Минимальные системы обычно поддерживают набор, состоящий из отрезка прямой, многоугольника и некоторой формы текста (последовательности символов). Все элементы набора

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

В этом споре разработчики OpenGL заняли промежуточную позицию (как правило, самую удобную в споре). В базовой библиотеке используется небольшой набор примитивов, а в до-

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

Базовые примитивы OpenGL специфицируются набором точек в пространстве (вершин).

Формат определения объектов представлен ниже.

glBegin(<тип>);

glVertex*(...)?

glVertex*(...);

glEnd();

Значение <тип> определяет вид объекта и несет OpenGL информацию о том, каким образом нужно интерпретировать следующий далее список вершин. Между вызовами функций

glBegin() и glEnd() могут быть включены операторы вызовов других функций OpenGL. Например, здесь могут стоять операторы вызова функций задания атрибутов или вычисления значений координат вершин. Основное концептуальное отличие примитивов разного типа состоит в том, имеют ли они внутреннюю область. Все примитивы, кроме точек, определяются либо в терминах набора вершин, либо в терминах отрезков прямых линий (не следует путать

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

66 Глава 2. Графическое программирование отрезок4 задается парой вершин, но отрезок играет настолько большую роль в описании прочих объектов, что его можно рассматривать как базовый примитив. Отрезки можно использовать для аппроксимации кривых линий или с помощью отрезков соединять соседние точки на графике функции. Отрезками отображаются и ребра замкнутых геометрических объектов,

которые имеют внутреннюю область, например многоугольников.

В OpenGL есть несколько способов формирования отрезков (рис. 2.8).

Отрезки (GL_LINES)

Тип GL LINES задает формирование отрезка по двум вершинам, которые рассматриваются

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

Ломаные линии (GLLINESTRIP)

Если необходимо сформировать ломаную линию (polyline) — последовательность стыкующихся отрезков5, — то спользуется тип GL LINE_STRIP. Чаще всего ломаные линии используются для аппроксимации кривых. Если желательно получить замкнутый контур, то можно либо указать в качестве конечной и начальной в списке одну и ту же вершину, либо использовать

специальный тип, определяющий именно замкнутую ломаную, — GL_LINE_LOOP. В этом случае OpenGL самостоятельно свяжет отрезком последнюю вершину в списке с первой.

10. Основные графические примитивы. Базовой примитив «многоугольник» и корректность его заполне

11. Формы представления POLYGON.

12. Базовый примитив «шрифт». Виды шрифтов и их особенности.

13. Основные функций графического API – Функции задания атрибутов. Описание основных атрибутов в Open GL.

Основные типы функций API:

  1. Функции примитивов

  2. Функция атрибутов

  3. Функция визуализации

  4. Функция преобразования

  5. Функция ввода информации

  6. Функция управления

С помощью задания атрибутов мы определяем , как будут выглядеть на экране отображаемые элементы. Другими словами, если с помощью примитивов определяется, что появится на экране, то атрибуты определяют способ вывода на экран. В качестве атрибутов в Open GL позволяет задавать цвет, размер, толщина, тип написания, характеристики материала, текстуры, параметры освещения.

Размер: glPointSize (2.0);

Толщина: glLineWidth(3.0);

Цвет: glColor3f(T1,T2,T3);

C=T1*R+T2*G+T3*B;

RGB- аддитивная цветовая модель

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]