Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Основные графические примитивы OpenGL и их свойства
Четырехугольники
Библиотека OpenGL реализуется два примитива для рисования четырехугольников: несвязанные четырехугольники и четырехугольники с общей гранью.
Несвязанные четырехугольники
Для формирования данного примитива с использованием библиотеки OpenTK на C# в качестве параметра метода Begin класса GL необходимо указать значение Quads перечисления BeginMode. В Object Pascal для этого необходимо процедуре glBegin в качестве параметра указать константу GL_QUADS.
Для формирования каждого очередного четырехугольника используются четыре вершины. Если задано меньше 4 вершин, то четырехугольник не формируется. Порядок обхода вершин определяется последовательностью задания вершин. На рис. 4.8 отображены два четырехугольника, которые заданы с помощью 8 вершин ( пример 4.7 и пример 4.8).
В плоскости XY четырехугольники могут формироваться с помощью команды
Rect [d f I s][v].
В C# команда реализуется с помощью набора статических методов класса GL, например:
void Rect(double x1, double y1, double x2, double y2); void Rect(ref double v1, ref double v2);
В Object Pascal эта команда реализуется с помощью ряда процедур, таких как:
procedure glRectd (x1, y1, x2, y2: GLdouble); procedure glRectfv (v1, v2: PGLfloat);
Четырехугольники с общей гранью
Данный примитив задается на C# с помощью значения QuadStrip перечисления BeginMode и константы GL_QUAD_STRIP на Object Pascal, которые передаются в качестве параметра команде Begin.
Для построения первого четырехугольника требуется 4 вершины. Для формирования каждого последующего четырехугольника требуется задать очередные две вершины. Если вершин недостаточно для построения очередного четырехугольника, то они игнорируются.
Порядок обхода вершин для определения лицевой и обратной граней отличается от несвязанных четырехугольников. Порядок обхода ориентирован на вариант, когда вершины четырехугольников задаются парами в циклической конструкции, например, аналогично пример 4.9 и пример 4.10.
Порядок обхода вершин не совпадает с порядком задания вершин. Порядок обхода вершин первого четырехугольника 1-2-4-3. Порядок обхода для последующих четырехугольников ( рис. 4.9): от предпоследней вершины (3) к последней вершине (4) последнего четырехугольника, затем к последней новой вершине (6) и к предпоследней новой вершине (5). В результате направление обхода вершин всех четырёхугольников совпадает с направлением обхода вершин первого четырехугольника.
Многоугольники
Данный примитив задается на Object Pascal с помощью константы GL_POLYGON и на C# - с помощью значения Polygon перечисления BeginMode, которые передаются в качестве значения параметра команде Begin.
Порядок обхода вершин многоугольника для определения лицевой и обратной граней соответствует порядку задания вершин. Примитив может использоваться только для создания выпуклых многоугольников.
Пример формирования многоугольника приведен в пример 4.11 (C#) и пример 4.12 (Object Pascal). На рис. 4.10 отображена схема обхода вершин многоугольника.