CodeNet / Приложения / Алгоритмы / Графика / Учебник по компьютерной графике
CodeNet / Приложения / Графика / Учебник по компьютерной графике
CodeNet / Приложения / Графика / Учебник по компьютерной графике
Компьютерная Графика
- Алгоритм Кируса-Бека.
- Формализованный алгоритм Кируса-Бека.
- Разбиение невыпуклых многоугольников.
- Последовательное отсечение многоугольников.Алгоритм Сазермана - Ходтмена.
- Невыпуклые отсекающие области. Алгоритм Вейлера - Айдертона.
Разбиение невыпуклых многоугольников.
Пусть область невыпуклая :
дополнить область, или разбить ее на выпуклые области.
Факт выпуклости или вогнутости определяется путем векторного произведения всех смежных сторон.
Рассмотрим знаки :
- 1. все знаки равны нулю - многоугольник вырождается в отрезок;
- 2. есть и "+" и "-" - многоугольник не выпуклый;
- 3. все неотрицательные - многоугольник выпуклый и все нормали ориентированны влево от контура;
- 4. все неположительные - многоугольник выпуклый и все нормали ориентированны вправо от контура.
Вычисление нормалей :
Одна вершина выбирается как базовая и все векторные произведения вычисляются относительно ее.
(vx1vy2 - vy1vx2)k - векторное произведение v1,v2.
n*vE = (nx*i + nyj)(vEx*i + vEx*j) = nxvEx + nyvEy + 0;
nxvEx = -hyvEy {ny = 1}
nx = -(vEy / vEx)*i + j
vi-1 и vi - вершины
vi-1 * vi > 0, то n - внутренняя нормаль, иначе - внешняя.
- 1. перенос начала координат в точку v1;
- 2. начинаем вращать фигуру так, чтобы любое ребро лежало на оси X
- 3. если Y вершины меньше нуля, то фигура невыпуклая и она отсекается соседями.
Раздел назад | тема назад | тема вперед | Раздел вперед