Основы компьютерной графики для программистов. Казанцев А.В. - 36 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 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