- •4.Удаление невидимых элементов
- •4.1.Алгоритм Робертса
- •4.2.Алгоритм плавающего горизонта
- •4.3.Алгоритм Варнока
- •4.4.Алгоритм Уоткинса
- •4.5.Алгоритм z-буфера
- •4.6.Алгоритм трассировки лучей
- •4.7.Алгоритм Шумейкера
- •5.Построение реалистичных изображений
- •5.1.Простая модель освещения
- •Окончательно получаем
- •В этом случае
- •5.2.Определение вектора отражения
- •5.3.Закраска методами Гуро и Фонга
- •5.4.Построение теней
4.2.Алгоритм плавающего горизонта
Алгоритм разработан в 1972 г. и чаще всего используется для визуализации трехмерного представления функций вида F(x,y,z) = 0 и работает в пространстве изображения.
Главная идея данного метода заключается в сведении трехмерной задачи к двумерной путем пересечения исходной поверхности последовательностью параллельных секущих плоскостей, имеющих постоянные значения координат x, y или z. Алгоритм работает в пространстве изображения.
В простейшем случае алгоритм плавающего горизонта может быть сформулирован следующим образом.
Если на плоскости изображения при некотором заданном значении X соответствующее значение Y на кривой больше значения Y для всех предшествующих кривых при этом значении X, то текущая кривая видима в этой точке; в противном случае она невидима.
|
Алгоритм связан с формированием верхнего, всплывающего горизонта. Алгоритм работает хорошо, пока какая-то очередная кривая не окажется ниже самой первой кривой, то есть нужен нижний горизонт. С учетом этого алгоритм примет вид.
Если на плоскости изображения при некотором заданном значении X соответствующее значение Y на кривой больше максимума или меньше минимума по Y для всех предшествующих кривых при этом X, то текущая кривая видима в этой точке; в противном случае она невидима.
|
Дальнейшие уточнения алгоритма связаны с определением точек пересечения кривых для установления границ видимости. Тщательного анализа требуют боковые ребра, формирующие законченный вид изображения. Во многих случаях наиболее удобно представление изображения трехмерной функции с перекрестной штриховкой, получаемой за счет сечения двумя семействами параллельных плоскостей.
На рис.4.3 представлено изображение лицевой поверхности функции, описываемой уравнением
на интервале .
Изображение (рис.4.3) построено на основании сечений заданной функции двумя семействами плоскостей, параллельных координатным плоскостям XOY и YOZ (табл.4.3). При построении использованы верхний и нижний горизонты.
Табл.4.3.Значения заданной функции
Z \ Y |
-4 |
-3 |
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
-4 |
1,00 |
0,65 |
0,40 |
025 |
0,16 |
0,25 |
0.40 |
0,65 |
1,00 |
-3 |
1,54 |
1,00 |
0,62 |
0,38 |
0,31 |
0,38 |
0,62 |
1,00 |
1,54 |
-2 |
2,50 |
1,62 |
1,00 |
0,62 |
0,50 |
0,62 |
1,00 |
1,62 |
2,50 |
-1 |
4,00 |
2,60 |
1,60 |
1,00 |
0,80 |
1,00 |
1,60 |
2,60 |
4,00 |
0 |
5,00 |
3,25 |
2,00 |
1,25 |
1,00 |
1,25 |
2,00 |
3,25 |
5,00 |
1 |
4,00 |
2,60 |
1,60 |
1,00 |
0,80 |
1,00 |
1,60 |
2,60 |
4,00 |
2 |
2,50 |
1,62 |
1,00 |
0,62 |
0,50 |
0,62 |
1,00 |
1,62 |
2,50 |
3 |
1,54 |
1,00 |
0,62 |
0,38 |
0,31 |
0,38 |
0,62 |
1,00 |
1,54 |
4 |
1,00 |
0,65 |
0,40 |
025 |
0,16 |
0,25 |
0.40 |
0,65 |
1,00 |
4.3.Алгоритм Варнока
Алгоритм Варнока (1968 г.) работает в пространстве изображения. Он основан на двух принципах:
считается, что в пространстве, ограниченном экраном или окном экрана (прямоугольного сечения), можно распознать некоторое ограниченное число ситуаций, которые можно представить на экране. Если сцена, заключенная в это окно, не принадлежит ни к одному из распознаваемых случаев, окно делится на четыре подокна (рис.4.4). Затем последовательно рассматривается каждое из окон. Распознаваемые ситуации таковы, что при постепенном уменьшении габаритов окна вероятность встречи такой ситуации возрастает;
дальнейшее деление прекращается, когда размеры окна достигают пределов разрешающей способности экрана. Для этой ситуации независимо от сложности сцены, содержащейся в окне, вывести можно будет лишь одну точку.
Таким образом, алгоритм Варнока в основном состоит в определении пространственного положения каждой грани аппроксимирующих оболочек объектов относительно окна. Грани могут быть внешними, пересекающими, внутренними и охватывающими (рис.4.5). Последняя категория граней играет важную роль в алгоритме Варнока: систематически производится проверка, не располагается ли такая охватывающая грань перед всеми остальными в рассматриваемой части пространства. В зависимости от того, как оформляется изображение – в виде векторного рисунка или же в виде растрового изображения, - результат будет различным: в первом случае ничто не выводится, во втором - часть экрана, соответствующая окну, заполняется цветом охватывающей грани.
Таким образом, алгоритм Варнока можно использовать для получения как векторных, так и растровых изображений.