Ц.со5(е,),^,Л:^п(е,)). (6.20)
Построение сеток, моделирующих поверхности вращения, будет рассматриваться позднее, в тематическом задании 6.6.
6.5. Каркасные аппроксимации гладких объектов До сих пор мы строили сетки для отображения полиэдров, в которых каждая форма представляет собой множество плоских полигональных граней. Такие сетки в основном являются «интенсивными по данным» («data intensive*), то есть определяются списками вершин для каждой отдельной грани. Теперь же мы хотим строить такие сетки, которые будут аппроксимировать гладкие поверхности, подобные сфере или тору. Такие формы чаще задаются формулами, а не набором данных. Кроме того, мы хотим сделать так, чтобы используемые нами сетки можно было плавно закрашивать. Даже в тех случаях, когда эти сетки представляют собой, как и прежде, множество плоских граней, соответствующий алгоритм (закрашивание Гуро - Gouraud shading) рисует их с плавными градациями цветов, причем отдельные грани вообще не видны (вспомните рис. 6.1.) Все, что нужно для этого, - это правильно определить нормальный вектор в каждой вершине каждой грани. В частности, мы вычисляем нормальный вектор основной гладкой поверхности. Алгоритм закрашивания Гуро рассматривается в главе 8.
Основной подход для каждого типа поверхности заключается в том, чтобы «полигонизировать» («polygonalize») ее, или разбить на ячейки (tesselate), представив ее в виде множества плоских граней. Если эти грани достаточно малы и переход от одной грани к другой достаточно плавный, то полученная сетка даст хорошее приближение исходной поверхности. Вершины этих граней определяются вычислением значений параметрического представления поверхности в дискретных точках. Сетка создается путем обычного построения списков вершин и нормалей, за исключением того, что вершины здесь вычисляются по формулам. То же касается и нормалей в вершинах: они вычисляются по формулам нормали к поверхности в дискретных точках.
6.5.1. Представления поверхностей