ВУЗ:
Составители:
Основы компьютерной графики для программистов 36
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
Глава 4. Алгоритмы растровой графики
Рисование отрезков прямых
Растром называется прямоугольная сетка точек, формирующих изображение на экране
компьютера. Каждая точка растра характеризуется двумя параметрами: своим
положением на экране и своим цветом, если монитор цветной, или степенью яркости,
если монитор черно-белый. Поскольку растровые изображения состоят из множества
дискретных точек, то для работы с ними необходимы специальные алгоритмы.
Рисование отрезка
прямой линии - одна из простейших задач растровой графики.
Смысл ее заключается в вычислении координат пикселов, находящихся вблизи
непрерывных отрезков, лежащих на двумерной растровой сетке.
Термин “пиксел” образован от английского pixel (picture element - элемент
изображения) - то есть точка на экране. Будем считать, что пикселы имеют
целочисленные координаты. На первый взгляд кажется, что эта задача
имеет простое
решение. Пусть конечные точки отрезка имеют целочисленные координаты, и
уравнение прямой, содержащей отрезок:
bkxy
+
=
. Не нарушая общности, будем
также считать, что тангенс угла наклона прямой лежит в пределах от 0 до 1. Тогда для
изображения отрезка на растре достаточно для всех целых
x
, принадлежащих отрезку,
выводить на экран точки с координатами
(
)
(
)
yx Round,
. Однако в этом методе
присутствует операция умножения kx . Хотелось бы иметь алгоритм без частого
использования операции умножения вещественных чисел. Избавиться от операции
умножения можно следующим образом. Поскольку
x
y
k
Δ
Δ
= , то один шаг по
целочисленной сетке на оси
x
будет соответствовать 1
=
Δ
x
. Отсюда получаем, что y
будет увеличиваться на величину
k
. Итерационная последовательность выглядит
следующим образом:
1
1
+
=
+ ii
xx , kyy
ii
+
=
+1
Когда
1>
k
, то шаг по
x
будет приводить к шагу по 1>y , поэтому
x
и y следует
поменять ролями, придавая
y единичное приращение, а
x
будет увеличиваться на
k
k
y
x
1
=
Δ
=Δ
единиц. Этот алгоритм все же не свободен от операций с
вещественными числами. Наиболее изящное решение задачи растровой развертки
Рис. 15. Растеризация отрезка прямой линии.
Основы компьютерной графики для программистов 36 ____________________________________________________________________________________________________________________ Глава 4. Алгоритмы растровой графики Рисование отрезков прямых Растром называется прямоугольная сетка точек, формирующих изображение на экране компьютера. Каждая точка растра характеризуется двумя параметрами: своим положением на экране и своим цветом, если монитор цветной, или степенью яркости, если монитор черно-белый. Поскольку растровые изображения состоят из множества дискретных точек, то для работы с ними необходимы специальные алгоритмы. Рисование отрезка прямой линии - одна из простейших задач растровой графики. Смысл ее заключается в вычислении координат пикселов, находящихся вблизи непрерывных отрезков, лежащих на двумерной растровой сетке. Рис. 15. Растеризация отрезка прямой линии. Термин “пиксел” образован от английского pixel (picture element - элемент изображения) - то есть точка на экране. Будем считать, что пикселы имеют целочисленные координаты. На первый взгляд кажется, что эта задача имеет простое решение. Пусть конечные точки отрезка имеют целочисленные координаты, и уравнение прямой, содержащей отрезок: y = kx + b . Не нарушая общности, будем также считать, что тангенс угла наклона прямой лежит в пределах от 0 до 1. Тогда для изображения отрезка на растре достаточно для всех целых x , принадлежащих отрезку, выводить на экран точки с координатами ( x, Round ( y )). Однако в этом методе присутствует операция умножения kx . Хотелось бы иметь алгоритм без частого использования операции умножения вещественных чисел. Избавиться от операции умножения можно следующим образом. Поскольку k = Δy , то один шаг по Δx целочисленной сетке на оси x будет соответствовать Δx = 1 . Отсюда получаем, что y будет увеличиваться на величину k . Итерационная последовательность выглядит следующим образом: x i +1 = xi + 1, y i +1 = y i + k Когда k > 1 , то шаг по x будет приводить к шагу по y > 1 , поэтому x и y следует поменять ролями, придавая y единичное приращение, а x будет увеличиваться на Δx = Δy =1 единиц. Этот алгоритм все же не свободен от операций с k k вещественными числами. Наиболее изящное решение задачи растровой развертки http://www.ksu.ru/persons/9134.ru.html
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »