Поверхность на сети кривых MbMeshSurface

Класс MbMeshSurface объявлен в файле surf_mesh_surface.h.

Поверхность на сети кривых MbMeshSurface описывается множеством кривых RPArray< MbCurve3D > uCurves, множеством кривых RPArray< MbCurve3D > vCurves, множеством значений первого параметра поверхности uParams, множеством значений второго параметра поверхности vParams, граничными значениями первого параметра поверхности umin и umax, граничными значениями второго параметра поверхности vmin и vmax, признаками наличия полюса поверхности при граничных значениях первого параметра poleUMin, poleUMax, признаками наличия полюса поверхности при граничных значениях второго параметра poleVMin, poleVMax, признаком периодичности поверхности по первому параметру uclosed, признаком периодичности поверхности по второму параметру vclosed, типом type0 сопряжения поверхности на краю, соответствующем второму параметру vmin, типом type1 сопряжения поверхности на краю, соответствующем первому параметру umin, типом type2 сопряжения поверхности на краю, соответствующем второму параметру vmax, типом type3 сопряжения поверхности на краю, соответствующем первому параметру umax. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.

Количество элементов множества кривых vCurves и множества значений первого параметра поверхности uParams согласованы так, что точкам кривой vCurves[j] соответствует параметр uParams[j]. Первый параметр поверхности u принимает значения на отрезке uParams[0] ≤ u ≤ uParams[uParams.MaxIndex()]. Поверхность может быть периодической по первому параметру, если периодическими являются все кривые uCurves.

Количество элементов множества кривых uCurves и множества значений второго параметра поверхности vParams согласованы так, что точкам кривой uCurves[i] соответствует параметр vParams[i]. Второй параметр поверхности v принимает значения на отрезке vParams[0] ≤ v ≤ vParams[vParams.MaxIndex()]. Поверхность может быть периодической по второму параметру, если периодическими являются все кривые vCurves.

Каждая кривая uCurves[i] должна иметь точки пересечения или точки скрещения с каждой кривой vCurves[j]. Соседние кривые множества uCurves не должны иметь противоположные направления. Соседние кривые множества vCurves также не должны иметь противоположные направления.

В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией, которая приведена в книге «Геометрическое моделирование», автор Голованов Н.Н. Поверхность на сети кривых приведена на рисунке:

../../../../_images/O.5.20.1.png

Форма поверхности зависит от формы кривых, их взаимного расположения и значений параметров множеств uParams и vParams. Если каждая кривая uCurves[i] пересекается с каждой кривой vCurves[j], то поверхность проходит по кривым vCurves[j] при параметрах u = uParams[j] и по кривым uCurves[i] при параметрах v = vParams[i].