| ПРИМЕР - ШАГ 5 |
Следующий шаг - построение тени от куба на заданной плоскости. Для того, чтобы получить на заданной плоскости тень от грани, необходимо спроектировать эту грань на плоскость относительно источника света (в нашем случае это будет параллельным проектированием, параллельным вектору lightDir). Проекцию произвольной вершины р грани будем искать в виде
p+t*lightDir
Для определения проекции необходимо найти то значение t, при котором точка p+t*lightDir попадет на плоскость. Считая, что плоскость задана уравнением
(p,n)+d=0,
получаем для t следующее уравнение:
(p,n)+d+t(lightDir,n)=0
Это линейное уравнение относительно t, разрешив его, находим проекцию точки р на заданную плоскость. Чтобы построиь тень от грани необходимо спроектировать все вершины грани на плоскость и по полученным вершинам нарисовать на экране (это потребует еще одной проекции, при помощи камеры) грань теневого цвета. Таким образом проектируются и рисуются все грани, составляющие куб, непосредственно перед выводом самого куба. Соответствующий фрагмент кода для плоскости у=-2 приводится ниже.
| <<Шаг 4 - Расчет освещенности | Шаг 6 - Анимация>> |
|
Hosted by Graphics & Media Lab.
http://graphics.cs.msu.su |
|
mailto:Laboratory Last modified: 24-Aug-2001 |