Поверхность Кунса MbCoonsPatchSurface
Класс MbCoonsPatchSurface объявлен в файле surf_coons_surface.h.
Бикубическая поверхность Кунса MbCoonsPatchSurface построена аналогично поверхности Кунса MbCoverSurface и имеет дополнительные условия для радиуса-вектора на краях. Бикубическая поверхность Кунса MbCoonsPatchSurface описывается четырьмя кривыми MbCurve3D * curve0, curve1, curve2, curve3, производной curve0V радиуса-вектора поверхности вдоль кривой curve0 по второму параметру поверхности, производной curve1U радиуса-вектора поверхности вдоль кривой curve1 по первому параметру поверхности, производной curve2V радиуса-вектора поверхности вдоль кривой curve2 по второму параметру поверхности, производной curve3U радиуса-вектора поверхности вдоль кривой curve3 по первому параметру поверхности, четырьмя угловыми точками vertex[4], четырьмя производными по первому параметру поверхности в угловых точках vertexU[4], четырьмя производными по второму параметру поверхности в угловых точках vertexV[4], четырьмя смешанными производными по первому и второму параметрам поверхности в угловых точках vertexUV[4], четырьмя парами граничных значений параметров соответствующих кривых: t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max, признаком периодичности поверхности по первому параметру uclosed, признаком периодичности поверхности по второму параметру vclosed. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Первый параметр поверхности u принимает значения на отрезке 0 ≤ u ≤ 1. Поверхность может быть периодической по первому параметру, если периодическими являются кривые curve0, curve2, curveV0, curveV2, а кривые curveU1 и curveU3 совпадают.
Второй параметр поверхности v принимает значения на отрезке 0 ≤ v ≤ 1. Поверхность может быть периодической по второму параметру, если периодическими являются кривые curve1 и curve3, curveU1, curveU3, а кривые curveV0 и curveV2 совпадают.
Соседние кривые curve0, curve1, curve2, curve3 должны иметь точки пересечения или точки скрещения друг с другом. Параметры кривых t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max вычисляются по точкам пересечения или скрещения кривых и определяют рабочие участки кривых, точки vertex[4], vertexU[4], vertexV[4], vertexUV[4]. Направления кривых для поверхности не имеют значения, но параметризация пар кривых curve0 и curveV0, curve2 и curveV2, curve1 и curveU1, curve3 и curveU3 должна совпадать.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией, которая приведена в книге «Геометрическое моделирование» Голованова Н.Н. Бикубическая поверхность Кунса строится по заранее рассчитанным данным и используется для построения сопряжений и заплаток с условиями сопряжения на краях. Бикубическая поверхность Кунса приведена на рис. 1.
Рис. 1
Форма поверхности зависит от формы кривых и производных. Если соседние кривые пересекаются в точках vertex[4], то поверхность проходит по участкам кривых: при u = 0 поверхность проходит по участку кривой curve3, при v = 0 поверхность проходит по участку кривой curve0, при u = 1 поверхность проходит по участку кривой curve1, при v = 1 поверхность проходит по участку кривой curve2.