Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Геом моделирование 2D объектов бис бис.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
772 Кб
Скачать
☆
    1. Определение координат характерных вершин объекта

Если графический объект является образом реального объекта, найти координаты его характерных точек в ОСК несложно. Нужно просто спроецировать его в масштабе в СКО. В другом случае координаты вершин понятны из их расстановки в ОСК. В любом случае проектировщик выполняет эту работу, исходя из каких-то своих соображений. Пусть в рассматриваемом примере координаты семи вершин стрелки (вершины помечены на рисунке 3 номерами) имеют значения, приведенные в таблице 2.

Таблица 2 – Координаты вершин объекта-стрелки в ОСК

Номер вершины i

1

2

3

4

5

6

7

Координата xi

-0,4

0

0

-0,4

0

-0,4

0

Координата yi

0,2

0,2

-0,2

-0,4

0,4

0

-0,4

2.3 Выбор команд библиотеки для отображения объекта

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

glVertex2f(х,у); или glVertex3f(х,у,z);

Число 2 или 3 указывает, в каком пространстве – двухмерном или трехмерном – представляется вершина. Буква fозначает тип параметра, в данном случае с плавающей точкой (float), но может использоваться и другой тип:i – целый,d – двойной точности и др. В скобках помещаются параметры команды, это две или три координаты вершины. Они могут задаваться константами, например, glVertex3f(0.5,-0.4,0.0); или переменными. Во втором случае переменные до использования их в команде glVertex должны получить численные значения.

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

glBegin(<параметр>);

. . .

glEnd();

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

glBegin(GL_TRIANGLES);glVertex2f(0.0,0.4);

glVertex2f(0.4,0.0);

glVertex2f(0.0,-0.4);glEnd();

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

Пара скобок glBegin – glEnd заносит описываемое в ней изображение (в виде кодов цветояркости) в буфер кадра видеосистемы компьютера. При опросе буфера по закону растра это изображение выводится на экран. Следовательно, можно считать, что скобки glBegin – glEnd рисуют изображение, только не на экране, а пока в памяти компьютера.

В одной паре скобок glBegin – glEnd можно описать несколько однотипных примитивов. Так, наборкоманд

glBegin(GL_LINES);

glVertex2f(0.0,0.0);

glVertex2f(0.1,0.1);

glVertex2f(0.4,0.1);

glVertex2f(0.3,0.0);

glVertex2f(0.5,0.5);

glEnd();

рисует два прямолинейных отрезка, заданных первой–второй и третьей–четвертой командами glVertex, а пятая команда glVertex игнорируется, так как описываемой ей вершине нет «пары».