Трехмерная компьютерная графика
Категория реферата: Рефераты по информатике, программированию
Теги реферата: шпаргалки по гражданскому, свобода реферат
Добавил(а) на сайт: Патрикия.
Предыдущая страница реферата | 4 5 6 7 8 9 10 11 12 13 14 | Следующая страница реферата
Если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше максимума или меньше минимума по y для всех предыдущих кривых при этом x, то текущая кривая видима. В противном случае она невидима.
Если на участке от предыдущего (xn) до текущего (xn+k) значения x видимость кривой изменяется, то вычисляется точка пересечения (xi).
Если на участке от xn до xn+k сегмент кривой полностью видим, то он изображается целиком; если он стал невидимым, то изображается фрагмент от xn до xi; если же он стал видимым, то изображается фрагмент от xi до xn+k.
Заполнить массивы верхнего и нижнего плавающих горизонтов.
Изложенный алгоритм приводит к некоторым дефектам, когда кривая, лежащая в одной из более удаленных от точки наблюдения плоскостей, появляется слева или справа из-под множества кривых, лежащих в плоскостях, которые ближе к указанной точке наблюдения. Этот эффект продемонстрирован
на рис. 3.7, где уже обработанные плоскости n - 1 и n расположены ближе к
точке наблюдения. На рисунке показано, что получается при обработке
плоскости n + 1. После обработки кривых n - 1 и n верхний горизонт для
значений x = 0 и 1 равен начальному значению у; для значений x от 2 до 17
он равен ординатам кривой n; а для значений 18, 19, 20 - ординатам кривой n
- 1. Нижний горизонт для значений x = 0 и 1 равен начальному значению у;
для значений x = 2, 3, 4 – ординатам кривой n; а для значений x от 5 до 20
- ординатам кривой n - 1. При обработке текущей кривой (n + 1) алгоритм
объявляет ее видимой при x = 4. Это показано сплошной линией на рис. 3.7.
Аналогичный эффект возникает и справа при x = 18. Такой эффект приводит к
появлению зазубренных боковых ребер. Проблема с зазубренностью боковых
ребер решается включением в массивы верхнего и нижнего горизонтов ординат, соответствующих штриховым линиям на рис. 3.7. Это можно выполнить
эффективно, создав ложные боковые ребра. Приведем алгоритм, реализующий эту
идею для обеих ребер.
Обработка левого бокового ребра:
Если Pn является первой точкой на первой кривой, то запомним Pn в качестве Pn(1 и закончим заполнение. В противном случае создадим ребро, соединяющее Pn и Pn(1.
Занесем в массивы верхнего и нижнего горизонтов ординаты этого ребра и запомним Pn в качестве Pn(1.
Обработка правого бокового ребра:
Если Pn является последней точкой на первой кривой, то запомним Pn в качестве Pn(1 и закончим заполнение. В противном случае создадим ребро, соединяющее Pn и Pn(1.
Занесем в массивы верхнего и нижнего горизонтов ординаты этого ребра и запомним Pn в качестве Pn(1.
Теперь полный алгоритм выглядит так:
Для каждой плоскости z = const.
Обработать левое боковое ребро.
Для каждой точки, лежащей на кривой из текущей плоскости:
Если при некотором заданном значении x соответствующее значение у на кривой больше максимума или меньше минимума по у для всех предыдущих кривых при этом x, то кривая видима (в этой точке). В противном случае она невидима.
Если на сегменте от предыдущего (xn) до текущего (xn+k) значения x видимость кривой изменяется, то вычисляется пересечение (xi).
Если на участке от xn до (xn+k) сегмент кривой полностью видим, то он изображается целиком; если он cтал невидимым, то изображается его кусок от xn до xi; если же он стал видимым, то изображается его кусок от xi до xn+k.
Заполнить массивы верхнего и нижнего плавающих горизонтов.
Обработать правое боковое ребро.
Если функция содержит очень острые участки (пики), то приведенный алгоритм может дать некорректные результаты. Во избежании этого если встречаются узкие участки, то функцию следует вычислять в большем числе точек.
На рис. 3.8 показан типичный результат работы алгоритма плавающего горизонта. Запись этого алгоритма приводиться ниже.
Алгоритм плавающего горизонта
Гэкран – разрешение экрана в горизонтальном направлении
Вэкран – разрешение экрана в вертикальном направлении
Верх – массив, содержащий координаты верхнего горизонта
Низ – массив, содержащий координаты нижнего горизонта
Y – текущее значение функции y = f ( x, z ) при z = const
Тфлаг – флаг видимости для текущей точки
Пфлаг – флаг видимости для предыдущей точки, равный
0 = невидима
Рекомендуем скачать другие рефераты по теме: предмет культурологии, реферат на тему организация.
Предыдущая страница реферата | 4 5 6 7 8 9 10 11 12 13 14 | Следующая страница реферата