Поверхность Кунса MbCoverSurface
Класс MbCoverSurface объявлен в файле surf_cover_surface.h.
Поверхность Кунса MbCoverSurface описывается кривыми MbCurve3D curve0, curve1, curve2, curve3, четырьмя точками MbCartPoint3D vertex[4], четырьмя парами граничных значений параметров соответствующих кривых: t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max, признаком периодичности поверхности по первому параметру uclosed, признаком периодичности поверхности по второму параметру vclosed, признаком наличия полюса поверхности при начальном значении первого параметра poleUMin, признаком наличия полюса поверхности при конечном значении первого параметра poleUMax, признаком наличия полюса поверхности при начальном значении второго параметра poleVMin, признаком наличия полюса поверхности при конечном значении второго параметра poleVMax. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Первый параметр поверхности u принимает значения на отрезке 0 ≤ u ≤ 1. Поверхность может быть периодической по первому параметру, если периодическими являются кривые curve0 и curve2.
Второй параметр поверхности v принимает значения на отрезке 0 ≤ v ≤ 1. Поверхность может быть периодической по второму параметру, если периодическими являются кривые curve1 и curve3.
Соседние кривые curve0, curve1, curve2, curve3 должны иметь точки пересечения или точки скрещения друг с другом. Параметры кривых t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max вычисляются по точкам пересечения или скрещения кривых и определяют рабочие участки кривых и точки vertex[4]. Направления кривых для поверхности не имеют значения.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией
где w0 = 1 - u, w1 = 0.5(u - uv), w2 = 0.5(u + uv) — барицентрические координаты поверхности,
— параметр кривой curve0,
— параметр кривой curve1,
— параметр кривой curve2,
— параметр кривой curve3.
Поверхность Кунса на четырёх скрещивающихся кривых приведена на рис. 1.
Рис. 1
Форма поверхности зависит от формы кривых. Если соседние кривые пересекаются в точках vertex[4], то поверхность проходит по участкам кривых: при u = 0 поверхность проходит по участку кривой curve3, при v = 0 поверхность проходит по участку кривой curve0, при u = 1 поверхность проходит по участку кривой curve1, при v = 1 поверхность проходит по участку кривой curve2.