§ 2.2 Визуализация алгебраических поверхностей 2-го порядка
Рассмотрим методы и алгоритмы построения реалистических пиксельных отображений пространственных объектов на экран при центральном проецировании.
В отличие от методов построения каркасных изображений, где для быстроты вычислений и вывода изображений на экран используется вывод изображения отрезками прямых линий, при окраске освещенных поверхностей необходим пиксельный вывод изображений, а соответственно и вычисление значений каждого пиксела отображаемой поверхности.
Значение пиксела выражается в полутоне цвета. Число полутонов для одного чистого цвета определяет цветовую разрешающую способность изображения.
Цветовая разрешающая способность устанавливается аппаратными средствами и реализуется программным средствами путем отображения объемных тел на плоский экран с определенной точки зрения и точек освещения.
Алгоритм метода окраски освещенных поверхностей следующий:
-
Из точки зрения (рис.2.4) проводим луч a, проходящий через визуализируемую поверхность и попадающий на экран проецирования в точку ;
-
Луч зрения проходя через поверхность дает для поверхности 2-го порядка две точки - ближняя к наблюдателю и - дальняя;
-
В точке пересечения с поверхностью определяем вектор нормали N к ближней точке. Вычисляем угол a между вектором нормали N и направлением освещения L. Если угол равен нулю, то поверхность освещена максимально (луч освещения перпендикулярен поверхности в данной точке), если угол равен 90 градусов, то освещение равно нулю (луч освещения касается поверхности, скользит поверхности в данной точке), величина угла определяет уровень освещения;
-
Находим координаты точки пересечения луча зрения с экраном проецирования ;
-
Вычисляем экранные координаты пиксела;
-
Присваиваем пикселу номер цвета (полутона освещения);
-
Выводим пиксел на экран;
-
Начиная сканирование поверхности с точки выбора (рис.2.5), и идя влево, затем вправо с переходом на строку вверх-вниз, в цикле определяем все проекции точек поверхности и получаем на экране окрашенную освещенную поверхность.
Рис. 2.4
Рис. 2.5
Рассмотрим математическое описание метода.
Визуализируем поверхность 2-го порядка, уравнение которой имеет общий вид
. (2.1)
Уравнение прямой линии, проведенной через две точки в пространстве, имеет вид
; (2.2)
Сканирование луча идет от глаза к экрану, проходя через поверхность, и начинается с точки выбора поверхности.
Размер шагов при решении математических уравнений вычисляется следующим образом. Например, разрешающая способность изображения равна 800 600. Физический размер пиксела на экране размером 256х192 мм (14”) по x равен 0,32 мм - по z равен 0,32 мм.
Примем текущие значения координат в мм:
-
пиксела на экране
- по широте, - по высоте;
- точки, лежащей на поверхности
- по широте объема, - по глубине объема,
- по высоте объема.
Решение уравнений осуществляется в мм.
Меняя текущее экранное значение пиксела по от 0 до 799, а по от 0 до 599 вычисляем координаты точек, лежащих на экране и поверхности.
Определим координаты точки пересечения луча проецирования с поверхностью:
координата x
в уравнение (2) подставим и выразим через
(2.3)
координата z (необходимо инвертировать экранную систему в координатную систему пространства по высоте, так как начало экранной системы в левом верхнем углу экрана, а начало пространственной системы в левом нижнем углу пространства)
в уравнение (2) подставим и выразим через
(2.4)
Решим систему, состоящую из уравнений (2.1), (2.2), подставив выражения (2.3) и (2.4) в уравнение (2.1) и получив, опуская громоздкие выкладки, уравнение относительно
(2.5)
где
,
решаем уравнение (2.5) для нахождения
(ближняя точка поверхности)
(дальняя точка поверхности).
Подставляя вычисленное значение в (2.3) вычислим .
Подставляя вычисленное значение в (2.4) вычислим .
Дифференцируя уравнение (2.1) и, подставляя координаты точки поверхности , вычисляем координаты нормали :
;
;
.
Вычисляем координаты вектора освещенности в точке поверхности и относительно точки освещения :
;
(точечный источник освещения);
(параллельные лучи освещения);
.
Вычисляем угол между нормалью поверхности в точке и направлением освещения
Величина а изменяется в пределах от 0 до 1. Номер полутона цвета hcol определяется по формуле
,
где dcol - число полутонов цвета;
bcol - начальный номер цвета в цветовой таблице.
Для вывода пиксела на экран используется стандартная функция
.
Если в ходе сканирования при вычислении подкоренное выражение приобретает отрицательное значение, это означает, что луч сканирования выходит за пределы поверхности. В этом случае меняется направление сканирования.
Порядок сканирования для минимизации числа проходов следующий:
-
От точки выбора поверхности проходим по строке вправо до границы поверхности;
-
От точки выбора поверхности проходим по строке влево до границы поверхности;
-
Определяем середину между границами поверхности;
-
От середины между границами поверхности переходим на одну строку вверх и повторяем процедуры прохода вправо и влево;
-
Повторяем процедуры 1...4 до нахождения верхней границы поверхности;
-
После от точки выбора поверхности переходим на одну строку вниз и повторяем процедуры 1...4 с движением вниз до нахождения нижней границы поверхности.