
- •Виды представления изображения на плоскости
- •Что есть растр, пиксел и растровое изображение; связность.
- •Примитивы растровой графики и их представление на экране. Алгоритмы растровой графики
- •Разложение в растр отрезков прямых.
- •Разложение на основе параметрического уравнения прямой
- •Алгоритм Брезенхема отрисовки отрезка. Слайд 12.
- •Отрисовка окружности
- •5.1. Алгоритм Брезенхема для окружности.
- •Типы пространств и системы координат их.
- •Алгоритмы отсечения
- •7.1. Постановка задачи. Решение «в лоб»
- •Побитовые бинарные операции.
- •1 Побитовые логические операции
- •2 Битовые сдвиги
- •3 В языках программирования
- •4 Связь с другими науками
- •5 Практические применения
- •Алгоритм Коэна – Сазерленда
- •Тема: Матрицы и операции над ними
- •Основные определения
- •Транспонирование матриц
- •Обратная матрица
- •Формат 32-битного целого числа со знаком
- •Список операторов
- •Разбор операторов
- •Операторы битового сдвига
- •Применение побитовых операторов
Алгоритмы отсечения
7.1. Постановка задачи. Решение «в лоб»
Созданный объект надо разместить на экране в видовом окне (иногда называют область вывода, картинная плоскость). Как это можно сделать, если объект целиком не помещается в области вывода? Пусть имеется некоторая сцена и видовое окно. Видовое окно рассматривают как отсекающую рамку регулярной формы. Обычно, это квадратное или прямоугольное окно. Его задают 4-мя рёбрами – левым (Л, L), правым (П, R), верхним (В, T) и нижним (Н, ). Рёбра двумерные, т.е. заданы координатами ymin, ymax, xmin и xmax. Стороны окна параллельны осям координат экрана или объектного пространства. Покажем это окно.
В видовом окне ABCD необходимо разместить элемент некоторой сцены - ∆-к PRQ. Треугольник полностью в окно не входит, требуется отсечь отрезки Р1R и Q1R.
Задачу можно решить в «лоб».
Найдём наклон «К» отрезка PR
Координаты P, R и Q известны. Нужно найти координаты P1 и Q1.
Координата yp1 = ymax,
а из формулы для наклона легко найти вторую координату
xp1
= xp
+
.
Теперь отрезок P1R можно удалить.
Аналогично находят координаты точки Q1.
Недостаток решения очевиден: операции с вещественными числами и деление.
Число и расположение объектов на сцене может быть самым разным. Поэтому от алгоритма требуется выполнить отсечение всего, что располагается за границами видового окна за минимально возможное время, сохраняя все элементы и те их части, что попадают в область вывода. Алгоритм должен быть эффективным и по скорости и по качеству отсечения. Предпочтение отдают, обычно, скорости.
Понятно, всё что расположено внутри окна – видимо. Надо посмотреть на объекты, которые частично или целиком не лежат в области видимости. По отношению к видовому окну (на рис. – в центре) разные отрезки лежат по-разному. Продолжим стороны области вывода вверх-вниз, влево-вправо. А затем проанализируем ситуацию.
Отрезок АВ имеет обе концевые точки внутри окна. Поэтому он будет виден целиком. Отрезок EF имеет концевые точки за пределами окна, но часть его будет показана в области вывода. Если оба конца отрезка находятся выше, ниже, слева или справа окна, то их не видно вовсе. Проверка этого условия устранит все такие отрезки, и они не попадут в окно. Трудности возникнут с отрезками CD, EF и PQ. Визуально понятно, что для отрезков CD и EF надо найти точки пересечения отрезков с рёбрами окна вывода и перезадать координаты этих частей, чтобы они попали в окно. А для отрезка PQ нужно выполнить более развёрнутый анализ, чтобы принять правильное решение – отбросить отрезок как невидимый. Алгоритм при этом не должен содержать вычислений с вещественными числами.
Прежде чем двигаться дальше, нам потребуется познакомиться с понятием побитовые бинарные операции – Слайды 20, 21, 22
Побитовые бинарные операции.
Битовая операция в программировании — некоторые операции над цепочками битов. В программировании, как правило, рассматриваются лишь некоторые виды этих операций: логические побитовые операции и битовые сдвиги. Битовые операции применяют в языках программирования и цифровой технике, изучаются в дискретной математике.
Содержание параграфа
1 Побитовые логические операции
1.1 Побитовое отрицание (NOT)
1.2 Побитовое И (AND)
1.3 Побитовое ИЛИ (OR)
1.4 Побитовое исключающее ИЛИ (XOR)
1.5 Другие побитовые логические операции
2 Битовые сдвиги
2.1 Логический сдвиг
2.2 Арифметический сдвиг
2.3 Циклический сдвиг
2.4 В языках программирования
3 В теории сложности алгоритмов
4 Связь с другими науками
4.1 Битовые операции и математическая логика
4.1.1 Обобщение операций на булеву алгебру
4.1.2 2-адическая интерпретация
4.2 Битовые операции как основа цифровой техники
5 Практические применения
5.1 Физическая реализация битовых операций
5.2 Схемы аппаратной логики
5.3 Использование в программировании
6 См. также
7 Примечания
Нам здесь потребуется познакомиться более внимательно с разделом 1. Другие разделы данного параграфа потребуются при более глубоком изучении дисциплин данной специальности и они могут быть просмотрены позже