Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2018-01-13 | 421 |
5.00
из
|
Заказать работу |
|
|
Большинство графических устройств являются растровыми, представляя изображение в виде прямоугольной матрицы (сетки, целочисленной решетки) пикселей (растра), и большинство графических библиотек содержат внутри себя достаточное количество простейших растровых алгоритмов. На рисунке приведена система растровых алгоритмов.
Алгоритмы растеризации.
Связность – возможность соединения двух пикселей растровой линией, т. е. последовательным набором пикселей.
1. Четырехсвязность: пиксели считаются соседними, если либо их x -координаты, либо их y – координаты отличаются на единицу: .
2. Восьмисвязность: пиксели считаются соседними, если их x -координаты и y -координаты отличаются не более чем на единицу: , .
При переводе объектов в растровое представление существуют, алгоритмы, как использующие четырехсвязность, так использующие восьмисвязность.
Растровое представление отрезка.
Рассмотрим задачу построения растрового изображения отрезка, соединяющего точки и . Для простоты будем считать, что . Тогда отрезок описывается уравнением: или .
Отсюда получаем простейший алгоритм растрового представления отрезка:
void line(int xa, int ya, int xb, int yb, int color){
double k = ((double)(yb – ya)) / (xb – xa);
double b = ya – k * xa;
for (int x = xa; x <= xb; x++)
putpixel(x, (int)(k * x + b), color);
}
Приведенный простейший пошаговый алгоритм построения отрезка имеет ряд недостатков:
1. Выполняют операции над числами с плавающей точкой, а желательно было бы работать с целочисленной арифметикой;
2. На каждом шаге выполняется операция округления, что также снижает быстродействие.
Эти недостатки устранены в следующем алгоритме Брезенхейма.
Алгоритм Брезенхейма.
Как и в предыдущем случае, будем считать, что тангенс угла наклона отрезка принимает значение в диапазоне от 0 до 1. Рассмотрим i -й шаг алгоритма (см. рисунок). На этом этапе пиксель уже найден как ближайший к реальному отрезку. Требуется определить, какой из пикселов ( или ) будет установлен следующим.
|
В алгоритме используется управляющая переменная , которая на каждом шаге пропорциональна разности между S и T. Если S<T, то ближе к отрезку и выбираем ее, иначе выбирается .
Пусть изображаемый отрезок проходит из точки в точку . Исходя из начальных условий, точка ближе к началу координат. Тогда перенесем оба конца отрезка, так чтобы первый конец отрезка совпал с началом координат. Начальной точкой отрезка стала точка (0, 0), конечной точкой стала (dx, dy), где , .
Итеративная формула вычисления управляющего коэффициента по предыдущему значению имеет вид: . {Вычисляется она из подобия треугольников: .
Находим T, как
Помножим левую и правую часть этого выражение на dx. И заменяем , , = }.
С помощью управляющего коэффициента выбирается следующий пиксель или .
Если , тогда выбирается и , .
Если , тогда выбирается и , .
Начальные значения , т.к. .
Преимуществом алгоритма является то, что для работы алгоритма требуются минимальные арифметические возможности: сложение, вычитание и сдвиг влево для умножения на 2.
Если dy>dx, то необходимо будет использовать этот же алгоритм, но пошагово увеличивая y и на каждом шаге вычислять x.
|
|
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!