6.4.1. Нормаль к поверхности Для гладкой поверхности вектор нормали существует в каждой ее точке и определяет локальную ориентацию участка поверхности в окрестности этой точки. Метод вычисления компонентов вектора нормали зависит от принятого способа математического описания поверхности. На двух примерах - плоскости и сферы - мы продемонстрируем, как определять нормаль и в чем состоят основные сложности вычислительного характера.

Плоскость описывается уравнением ах + by -|- cz -г d = 0.

Как было показано в главе 4, уравнение плоскости можно записать и в терминах нормали п в точке р0, которая принадлежит этой плоскости: п (р-ро) = 0.

где р- любая точка (х, у, г) на рассматриваемой плоскости. Сравнивая эти два уравнения, получим выражение для вектора нормали: п =

или, в однородных координатах, п =

Плоскость может быть также однозначно задана совокупностью трех точек р0, р|, Р;, не лежащих на одной прямой (неколлинеарных). Векторы р2-Ро и Р|-р0 параллельны плоскости, и для определения нормали можно использовать их векторное произведение: п = (р2-Ро) х (Р)-Ро)При определении нормали таким способом нужно внимательно отнестись к порядку сомножителей в векторном произведении. Как уже говорилось в главе 4, для любой поверхности в системе компьютерной графики различают внешнюю и внутреннюю стороны. Изменение порядка сомножителей в векторном произведении приводит к инвертированию направления

6.4. Вычисление векторов вектора нормали, а следовательно, внешняя сторона поверхности становится внутренней, а внутренняя - внешней. Это может существенно сказаться на дальнейших операциях, связанных с моделированием световых эффектов. В некоторых графических системах первые три вершины в определении многоугольника автоматически используются для формирования нормали к поверхности этого многоугольника, полагая его плоским. В OpenGL этого не происходит, но, как будет показано в разделе 6.5, возможность самостоятельно организовать в программе определение нормали позволяет прикладному программисту гибко управлять свойствами модели освещения.


⇐ Предыдущая| |Следующая ⇒