Skip to content
Yakuba Dmitry edited this page Jun 14, 2020 · 5 revisions

12. Двумерное отсечение. Простой алгоритм отсечения отрезка.

Отсечение

Отсечение – операция удаления части изображения, находящейся за пределами выделенной области, называемой отсекателем. Отсечение используется в алгоритмах удаления невидимых линий поверхностей и в некоторых алгоритмах учёта теней, поэтому от нас не только требуется скопировать или сохранить изображение, расположенное в пределах отсекателя, но и решить геометрическую задачу нахождения геометрических характеристик изображения, чтобы использовать их при решении других задач. Также существует понятие стирания изображения – это операция удаления части изображения, находящейся в пределах заданной области (то есть отсекателя).

Само по себе отсечение может проводиться в двумерном или трёхмерном пространствах. При этом, трёхмерный случай является обобщением двумерного случая. То есть, умея решать задачу в двумерном пространстве, не составит труда реализовать и решить её и в трёхмерном пространстве.

Существует следующая классификация двумерных отсекателей:

  • Регулярный (стандартный) отсекатель – это отсекатель прямоугольной формы со сторонами, параллельными координатным осям.

  • Нерегулярный отсекатель – отсекатель формы произвольного выпуклого многоугольника.

  • Более сложные отсекатели – отсекатели формы произвольного невыпуклого многоугольника.

Также не будет лишним привести классификацию трёхмерных отсекателей:

  • Отсекатели формы прямоугольного параллелепипеда

  • Отсекатели формы четырёхгранной усечённой пирамиды.

Следует отметить, что границу отсекателя принято относить к внутренней области отсечения.

Отсечение отрезков регулярным отсекателем

Перед тем, как обратиться к простому алгоритму отсечения отрезка регулярным отсекателем, нам потребуется решить задачу определения принадлежности заданного отрезка к области отсечения.

На следующей картинке определены три отрезка:

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

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

x_л≤x≤x_п и y_н≤y≤y_в

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

Каждый разряд в таком коде определяет положение точки относительно каждой из границ отсекателя. Обозначим такой код буквой T.

В таком коде для каждой точки будем иметь:

T_1=1,если x<x_л,а иначе:0
T_2=1,если x>x_п,а иначе: 0
T_3=1,если y<y_н,а иначе: 0
T_4=1,если y>y_в,а иначе: 0

Стоит отметить, что в координатах экрана в условиях для T_3 и T_4 знаки строгого неравенства поменяются между собой местами, так как в этом случае y_н>y_в.

Таким образом, точка будет видима в том случае, если поразрядная сумма её кода будет равна нулю. Получается, что и отрезок будет полностью видим в том случае, если поразрядные суммы кодов концов этого отрезка равны нулю: S_1=0 и S_2=0.

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

Ниже приведены два вида полностью невидимых отрезков:

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

Для определения полной невидимости отрезков, которые располагаются относительно отсекателя вполне определённым способом (Рисунок 2: полностью ниже нижней границы отсекателя, полностью левее левой границы, полностью правее правой границы, полностью выше верхней границы), достаточно провести следующий простой тест:

Если T_I&T_II≠0,то отрезок полностью невидимый, где & - поразрядное логические «и», а T_I- код первого конца отрезка и T_II- код второго конца отрезка.

При этом мы также имеем возможность определить частичную видимость следующим простым тестом:

Если S_1=0 и S_2≠0,то отрезок заведомо частично видимый
Если S_2=0 и S_1≠0,то отрезок заведомо частично видимый

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

Алгоритм

Фото заряжено на пересдачу

Следующий вопрос: 13. Отсечение. Алгоритм Сазерленда Коэна отсечения отрезка.

Предыдущий вопрос: 11. Основы методов устранения ступенчатости. Алгоритм Брезенхема с устранением ступенчатости. Алгоритм Ву.

Экзамен

  1. Задача синтеза сложного динамического изображения. Этапы синтеза изображения. Последовательность и основное содержание.
  2. Преобразования на плоскости. Вывод расчетных соотношений. Матрицы преобразований.
  3. Построение плоских кривых. Выбор шага изменения аргумента. Алгоритм построения эллипса и окружности по методу средней точки.
  4. Требования, предъявляемые к алгоритмам вычерчивания отрезков. Пошаговый алгоритм разложения отрезка в растр. Разложение в растр по методу цифрового дифференциального анализатора.
  5. Алгоритмы Брезенхема разложения отрезков в растр. Простой алгоритм Брезенхема. Целочисленный алгоритм Брезенхема. Общий алгоритм Брезенхема.
  6. Основные расчетные соотношения и алгоритм Брезенхема для генерации окружности.
  7. Растровая развертка сплошных областей. Алгоритм с упорядоченным списком ребер.
  8. Заполнение многоугольников. Алгоритмы заполнения по ребрам, с перегородкой, со списком ребер и флагом.
  9. Алгоритм заполнения с затравкой, простой алгоритм заполнения с затравкой.
  10. Алгоритмы заполнения с затравкой. Построчный алгоритм заполнения с затравкой.
  11. Основы методов устранения ступенчатости. Алгоритм Брезенхема с устранением ступенчатости. Алгоритм Ву.
  12. Двумерное отсечение. Простой алгоритм отсечения отрезка.
  13. Отсечение. Алгоритм Сазерленда Коэна отсечения отрезка.
  14. Отсечение Алгоритм разбиения средней точкой при отсечении отрезка.
  15. Отсечение. Алгоритм Кируса Бека отсечения отрезка.
  16. Внутреннее и внешнее отсечение. Определение выпуклости многоугольника; определение нормали; разбиение невыпуклых многоугольников. Триангуляция многоугольников.
  17. Отсечение многоугольников. Алгоритм Сазерленда Ходжмена.
  18. Отсечение многоугольников невыпуклыми областями. Алгоритм Вейлера Азертона.
  19. Модели трехмерных объектов. Требования, предъявляемые к моделям.
  20. Операции преобразования в трехмерном пространстве. Матрицы преобразований.
  21. Трехмерное отсечение. Виды отсекателей. Вычисление кодов концов отрезка для каждого типа отсекателей. Алгоритм отсечения отрезков средней точкой.
  22. Отсечение отрезков в трехмерном пространстве. Трехмерный алгоритм Кируса Бека.
  23. Определение факта выпуклости трехмерных тел. Разбиение тела на выпуклые многогранники.
  24. Алгоритм плавающего горизонта.
  25. Задача удаления невидимых линий и поверхностей. Ее значение в машинной графике. Классификация алгоритмов по способу выбора системы координат (объектное пространство, пространство изображений).
  26. Алгоритм Робертса. Основные этапы и математические основы каждого этапа.
  27. Алгоритм Робертса. Формирование матрицы тела. Удаление нелицевых граней.
  28. Алгоритм Робертса. Удаление отрезков, экранируемых другими телами.
  29. Удаление невидимых линий и поверхностей в пространстве изображений. Алгоритм Варнока (разбиение окнами): последовательность действий и основные принципы.
  30. Типы многоугольников, анализируемых в алгоритме Варнока. Методы их идентификации.
  31. Алгоритм Вейлера Азертона удаления невидимых линий и поверхностей.
  32. Алгоритм, использующий Z буфер.
  33. Алгоритм, использующий список приоритетов.
  34. Алгоритм построчного сканирования, использующий Z буфер. Интервальные методы построчного сканирования (основные предпосылки).
  35. Алгоритм определения видимых поверхностей путем трассировки лучей.
  36. Построение реалистических изображений. Физические и психологические факторы, учитываемые при создании реалистичных изображений. Простая модель освещения.
  37. Построение реалистических изображений. Метод Гуро закраски поверхностей (получение сглаженного изображения).
  38. Построение реалистических изображений. Закраска Фонга (улучшение аппроксимации кривизны поверхности).
  39. Определение нормали к поверхности и вектора отражения ( 4 способа) в алгоритмах построения реалистических изображений.
  40. Построение теней при создании реалистических изображений. Учет теней в алгоритмах удаления невидимых поверхностей.
  41. Учет прозрачности в модели освещения. Учет прозрачности в алгоритмах удаления невидимых поверхностей.
  42. Учет фактуры при создании реалистических изображений.
  43. Глобальная модель освещения с трассировкой лучей.
  44. Алгоритм трассировки лучей с использованием глобальной модели освещения.
  45. Определение направления преломленного луча.
Clone this wiki locally