Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция №5 по КГиГ.doc
Скачиваний:
6
Добавлен:
11.11.2018
Размер:
7.79 Mб
Скачать

§ 2.2 Визуализация алгебраических поверхностей 2-го порядка

Рассмотрим методы и алгоритмы построения реалистических пиксельных отображений пространственных объектов на экран при центральном проецировании.

В отличие от методов построения каркасных изображений, где для быстроты вычислений и вывода изображений на экран используется вывод изображения отрезками прямых линий, при окраске освещенных поверхностей необходим пиксельный вывод изображений, а соответственно и вычисление значений каждого пиксела отображаемой поверхности.

Значение пиксела выражается в полутоне цвета. Число полутонов для одного чистого цвета определяет цветовую разрешающую способность изображения.

Цветовая разрешающая способность устанавливается аппаратными средствами и реализуется программным средствами путем отображения объемных тел на плоский экран с определенной точки зрения и точек освещения.

Алгоритм метода окраски освещенных поверхностей следующий:

  1. Из точки зрения (рис.2.4) проводим луч a, проходящий через визуализируемую поверхность и попадающий на экран проецирования в точку ;

  2. Луч зрения проходя через поверхность дает для поверхности 2-го порядка две точки - ближняя к наблюдателю и - дальняя;

  3. В точке пересечения с поверхностью определяем вектор нормали N к ближней точке. Вычисляем угол a между вектором нормали N и направлением освещения L. Если угол равен нулю, то поверхность освещена максимально (луч освещения перпендикулярен поверхности в данной точке), если угол равен 90 градусов, то освещение равно нулю (луч освещения касается поверхности, скользит поверхности в данной точке), величина угла определяет уровень освещения;

  4. Находим координаты точки пересечения луча зрения с экраном проецирования ;

  5. Вычисляем экранные координаты пиксела;

  6. Присваиваем пикселу номер цвета (полутона освещения);

  7. Выводим пиксел на экран;

  8. Начиная сканирование поверхности с точки выбора (рис.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. От точки выбора поверхности проходим по строке вправо до границы поверхности;

  2. От точки выбора поверхности проходим по строке влево до границы поверхности;

  3. Определяем середину между границами поверхности;

  4. От середины между границами поверхности переходим на одну строку вверх и повторяем процедуры прохода вправо и влево;

  5. Повторяем процедуры 1...4 до нахождения верхней границы поверхности;

  6. После от точки выбора поверхности переходим на одну строку вниз и повторяем процедуры 1...4 с движением вниз до нахождения нижней границы поверхности.