ymax
направление
света
поверхность
объекта
ymin
Рис. 2.14. Модель Варна. Заслонки
направление
γ света
β
Р
Рис. 2.15. Модель Варна. Конусы
Заслонки, ориентированные по координатным плоскостям, моделируются путем ограничения протяженности освещенного участка по осям X, Y и Z. Если точка поверхности лежит внутри ограничителей, то вычисляется интенсивность, определяемая этим источником, иначе она игнорируется. Для рис. 2.14 необходимо, чтобы
ymin ≤ yобъекта ≤ ymax.
Конус позволяет получить четко очерченное пятно света без затухания по краям. Но при этом необходимо, чтобы угол β был меньше или равен углу γ, иначе точка поверхности не освещается данным источником света.
2.6.Прозрачность
Восновных моделях удаления невидимых линий и поверхностей, рассмотренных ранее, рассматривались только непрозрачные объекты. Но не все объекты являются непрозрачными, например, ваза, вода и
31
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
другие, т. е. существуют объекты, пропускающие свет. При переходе из одной среды в другую, например, из воздуха в воду, световой луч преломляется. Как известно из школьного курса физики, преломление рассчитывается по закону Снеллиуса: падающий и преломленный лучи лежат в одной плоскости, а углы падения и преломления связаны формулой
η1 sinθ η2 sinθ ,
где η1 и η2 – показатели преломления сред; – угол падения; – угол преломления (рис. 2.16). Ни одно вещество не пропускает весь падающий свет, часть его всегда отражается, что также проиллюстрировано на рис. 2.16.
|
|
Среда 1 |
Падающий |
|
|
луч |
|
Отраженный |
|
|
|
θ |
θ |
луч |
|
||
|
|
граница |
|
|
Преломленный |
|
θ' |
луч |
|
|
|
|
|
Среда 2 |
Рис. 2.16. Преломление света
Так же как и отражение, пропускание может быть зеркальным (направленным) или диффузным (рассеянным). Направленное пропускание свойственно, например, стеклу, и если смотреть на объект сквозь такое вещество, то за исключением контурных линий криволинейных поверхностей искажения нет. При рассеянном пропускании объект будет выглядеть нечетким или искаженным, а само вещество будет казаться полупрозрачным или матовым.
Некоторые эффекты преломления показаны на рис. 2.17.
32
b
2
a
3
1
4
Рис. 2.17. Эффекты преломления света
Показатели преломления объектов 1 и 2 одинаковы, а объекты 3 и 4 непрозрачны. Если не принимать во внимание эффект преломления, то наблюдатель в точке a видит объект 3, а наблюдатель в точке b – объект 4 (пунктирная линия). На самом деле, с учетом преломления, из точки a мы видим объект 4, а из точки b – объект 3 (непрерывная линия).
В простейших реализациях модели освещения эффекты прозрачности и преломления не учитываются, также не учитывается влияние пути, пройденного лучом в другой среде, на его интенсивность. В данном случае можно работать в пространстве объекта, но это долго и неэффективно.
Простое пропускание можно встроить в любой алгоритм (кроме алгоритма с z-буфером) следующим образом.
Прозрачные многоугольники или поверхности помечаются, и если видимая грань прозрачна, то в буфер кадра заносится линейная комбинация двух ближайших поверхностей:
I tI1 1 t I2 ,
где I1 – интенсивность видимой поверхности;
I2 – интенсивность поверхности, расположенной непосредственно за ней;
33
t – коэффициент прозрачности видимой поверхности (если t = 0, то поверхность полностью прозрачна, иначе при t = 1 поверхность полностью непрозрачна). Если поверхность 2 тоже прозрачна, то алгоритм применяется рекурсивно, пока не встретится фон или непрозрачная поверхность. Вблизи контурных линий прозрачность уменьшается изза толщины материала (например, ваза). Поэтому в данном случае применяется нелинейная интерполяция:
t tmin tmax tmin 1 1 nz |
p , |
где tmin и tmax – минимальные и максимальные составляющие прозрачности объекта;
nz – z-составляющая нормали к поверхности; p – коэффициент степени прозрачности;
t – прозрачность пиксела или точки объекта.
Для алгоритма с z-буфером необходимы отдельные буферы прозрачности, интенсивности и весовых коэффициентов прозрачности. Также необходимо отметить прозрачные многоугольники в структуре данных. Алгоритм для z-буфера приведен в [1].
3. ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ
Компьютерная геометрия – это математический аппарат, положенный в основу компьютерной графики. Основу компьютерной геометрии составляют различные преобразования точек и линий. При этом можно изменять масштаб изображения, вращать его, перемещать и трансформировать для улучшения наглядности изображения. Все эти преобразования можно выполнить на основе математических методов, которые будут рассмотрены далее. Преобразования разделяются на двумерные (преобразования на плоскости) и трехмерные (пространственные).
3.1. Двумерные преобразования
Геометрически каждая точка задается с помощью двух координат, т. е. вектора относительно выбранной системы координат. Координаты точек в декартовой системе координат можно рассматривать как элементы матрицы [x, y] строки или столбца. Положением этих точек управляют путем преобразования матрицы.
34
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Точки на плоскости можно перенести в новые позиции путем прибавления к координатам констант переноса
x
y
x y
m, n
x m y n ,
где m и n – коэффициенты матрицы преобразования.
Рассмотрим результаты матричного умножения матрицы [x y] на матрицу преобразования общего вида и частные случаи этой матрицы
x y |
a |
b |
ax cy bx dy |
x y , |
|
c |
d |
||||
|
|
|
при a = d = 1 и c = b = 0 умножение приводит к идентичной матрице
x y |
1 |
0 |
x y |
; |
|
0 |
1 |
||||
|
|
|
d = 1, b = c = 0 и a = const – изменение масштаба в направлении X
x y |
a |
0 |
ax y |
; |
|
0 |
1 |
||||
|
|
|
b = c = 0, a = const и d = const – изменение масштаба в направлениях x и y
x y |
a |
0 |
ax dy |
, |
|
0 |
d |
||||
|
|
|
если a d, то перемещения вдоль осей неодинаковы, если (a и d) > 1, то увеличение масштаба по обеим осям, если 0 < (a и d) < 1 – уменьшение, а если коэффициенты a или (и) d отрицательны, то происходит отображение координат точек
x y |
1 |
0 |
x y |
|
0 |
1 |
|||
|
|
– отображение относительно оси Y. Отображение и изменение масштаба вызывают только диагональные элементы матрицы преобразования;
при a = d = 1, c = 0, b = const – сдвиг
x y |
1 |
b |
x |
bx y , |
|
0 |
1 |
||||
|
|
|
|||
|
|
|
35 |
|