
- •Введение.
- •Цели, задачи и структура курса.
- •Предмет компьютерной графики.
- •Сферы применения компьютерной графики.
- •Отображение информации.
- •Проектирование.
- •Моделирование.
- •Интерфейс пользователя.
- •Графическая система.
- •Объект и наблюдатель.
- •Визуализация изображений.
- •Растровая визуализация.
- •Векторная визуализация.
- •Цвет
- •Свет и изображение.
- •Глаз человека.
- •Характеристики цвета.
- •Цветовые модели.
- •Глубина цвета
- •Палитра
- •Координаты.
- •Прямоугольная система координат на плоскости.
- •Прямоугольная система координат в 3-x мерном пространстве.
- •Прямоугольная система координат в n-мерном пространстве.
- •Полярная система координат.
- •Графическое представление.
- •Трёхмерное расширение.
- •Цилиндрическая система координат.
- •Сферическая система координат.
- •Координаты в матричном виде.
- •Произведение матриц.
- •Преобразование координат.
- •Аффинные преобразования координат.
- •Аффинные преобразования координат на плоскости.
- •Однородные координаты.
- •Аффинные преобразования координат в трехмерном пространстве.
- •Преобразования объектов.
- •Аффинные преобразования объектов на плоскости.
- •Трехмерные аффинные преобразования объектов.
- •Композиция преобразований.
- •Эффективность преобразований.
- •Базовые растровые алгоритмы.
- •Связность.
- •Алгоритмы вывода прямой линии
- •Прямое вычисление координат.
- •Алгоритм Брезенхэма.
- •Алгоритм вывода окружности.
- •Алгоритм Брезенхэма построения окружности.
- •Растеризация многоугольника.
- •Алгоритм со списком реберных пересечений.
- •Алгоритм заполнения со списком активных ребер.
- •Заливка с затравкой.
- •Алгоритмы отсечения.
- •Отсечение отрезков.
- •Алгоритм Коэна-Сазерленда.
- •FC-алгоритм.
- •Алгоритм Лианга-Барски.
- •Двумерный алгоритм Кируса — Бека
- •Проверка выпуклости многоугольника и определение нормалей
- •Алгоритм с использованием векторных произведений
- •Разбиение не выпуклых многоугольников
- •Отсечение многоугольника
- •Алгоритм Сазерленда-Ходгмана
- •Простой алгоритм отсечения многоугольника
- •Алгоритм отсечения многоугольника Вейлера-Азертона
- •Удаление невидимых линий и поверхностей.
- •Алгоритм удаления поверхностей с Z-буфером.
- •Алгоритм разбиения области Варнока.
- •Алгоритм трассировки лучей.

Компьютерная графика.
отрезка. В этом случае определяется максимальное значение из всех получаемых решений. Оно даст значение параметра t0 для начальной точки отсеченного отрезка. Если текущее полученное значение t0 окажется больше, чем t1, то отрезок отбрасывается, так как нарушено условие t0 <= t1.
На заключительном этапе алгоритма значения t0 и t1 используются для вычисления координат точек пересечения отрезка с окном. При этом, если t0 = 0, то начальная точка осталась P0 и вычисления не нужны. Аналогично, если t1 = 1, то конечная точка осталась P1 и вычисления также не нужны.
Все эти случаи пояснены на блок-схеме, представленной на рис. 43.
Рисунок 43: Блок-схема алгоритма Кируса-Бека
Вычисления значений параметров t0 и t1 выполняются в соответствии с выражениями (25).
t0 >= max ( { -Qi / Mi | Mi t1 <= min ( { -Qi / Mi | Mi
> 0, i = 1, 2, 3, 4} U {0} ) |
(25) |
|
< 0, i = 1, 2, 3, 4} U {1} ) |
||
|
Проверка выпуклости многоугольника и определение нормалей
Как видно из описания, алгоритм Кируса-Бека отсекает только по выпуклому окну. Кроме этого требуются значения внутренних нормалей к сторонам окна. Естественно выполнить эти вычисления в момент задания окна, так как следует ожидать, что одним окном будет отсекаться достаточно много отрезков.
Алгоритм с использованием векторных произведений
Проверка на выпуклость может производиться анализом знаков векторных произведений (произведение длин векторов умноженный на синус угла между векторами) смежных ребер (рис. 44).
-60-

Компьютерная графика.
Рисунок 44: Проверка выпуклости и определение нормалей (а - выпуклый многоугольник, б - не выпуклый многоугольник)
Далее определяем:
•Если знак векторного произведения равен 0, то вершина вырождена, т.е. смежные ребра лежат на одной прямой (рис. 44 б, вершина P).
•Если все знаки равны 0, то многоугольник отсечения вырождается в отрезок.
•Если же векторные произведения имеют разные знаки, то многоугольник отсечения не выпуклый (рис. 44 б).
•Если все знаки неотрицательные, то многоугольник выпуклый, причем обход вершин выполняется против часовой стрелки (рис. 44 а), т.е. внутренние нормали ориентированы влево от контура. Следовательно вектор внутреннего перпендикуляра к стороне может быть получен поворотом ребра на +90°.
•Если все знаки не положительные, то многоугольник выпуклый, причем обход вершин выполняется по часовой стрелке, т.е. внутренние нормали ориентированы вправо от контура. Следовательно вектор внутреннего перпендикуляра к стороне может быть получен поворотом ребра на -90°.
Разбиение не выпуклых многоугольников
Одновременное проведение операций проверки на выпуклость и разбиение простого не выпуклого многоугольника на выпуклые обеспечивается методом переноса и поворотов окна.
Рисунок 45: Проверка выпуклости и разбиение многоугольника (а - исходное окно, б — вогнутость после 3-й вершины, в — вогнутость после 8-й вершины)
Алгоритм метода при обходе вершин многоугольника против часовой стрелки состоит
вследующем:
1.Для каждой i-й вершины многоугольник сдвигается для переноса упомянутой вершины в начало координат.
-61-