Поверхность скругления MbChannelSurface
Класс MbChannelSurface объявлен в файле surf_channel_surface.h.
Поверхность скругления с переменным радиусом MbChannelSurface является наследником поверхности скругления MbFilletSurface. Поверхность скругления с переменным радиусом описывается кривой на первой сопрягаемой поверхности MbFilletSurface curve1, кривой на второй сопрягаемой поверхности MbSurfaceCurve curve2, кривой MbCurve3D curve0, функцией MbFunction weights0 веса кривой curve0, функцией изменения радиуса MbFunction function, способом построения скругления form, радиусами скругления distance1 и distance2, коэффициентом формы conic, граничными значениями umin и umax параметра кривых curve1, curve2, curve0 и функций weights0 и function, граничными значениями второго параметра поверхности vmin и vmax, признаком периодичности первого параметра поверхности uclosed, признаком наличия полюса поверхности при начальном значении первого параметра poleMin, признаком наличия полюса поверхности при конечном значении первого параметра poleMax. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Кривые curve1, curve2, curve0 и функции weights0, function согласованы друг с другом и имеют одинаковую область определения параметра. Первый параметр поверхности u совпадает с параметром кривых curve1, curve2, curve0 и функций weights0 и function, который является общим для них. Первый параметр поверхности принимает значения на отрезке umin ≤ u ≤ umax, который соответствует области определения кривых curve1, curve2, curve0 и функций weights0 и function. Поверхность может быть периодической по первому параметру, если периодическими являются кривые curve1, curve2, curve0 и функции weights0 и function.
Второй параметр поверхности v принимает значения на отрезке vmin ≤ v ≤ vmax. Значение v = vmin соответствует точке на кривой curve1, значение v = vmax соответствует точке на кривой curve2. Поверхность не может быть периодической по второму параметру.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией
Каждая кривая s(const, v) с фиксированным первым параметром поверхности u = const является NURBS-кривой третьего порядка, построенной по точкам curve1(u), curve0(u), curve2(u), у которой крайние точки имеют единичный вес, а средняя точка curve0(u) имеет вес weights0(u). При изменении первого параметра поверхности радиусы скругления меняются по законам R1(u) = distance1 · function(u) и R2(u) = distance2 · function(u). При conic = _ARC_ функция weights0(u) вычисляется из условия, что все кривые s(const, v) являются дугами окружности. При conic ≠ _ARC_ функция weights0 является константой и равна коэффициенту формы conic. Поверхность скругления с переменным радиусом приведена на рис. 1.
Рис. 1
Поверхность скругления с переменным радиусом гладко сопрягается с поверхностями, на которых расположены кривые curve1(u) и curve2(u), при этом параметр equable = true и form = st_Fillet.
Кривые поверхности s(const, v) с параметрами u = const являются коническими сечениями, форма которых зависит от параметра conic. Если conic = _ARC_ = 0, то кривые поверхности s(const, v) являются дугами окружности. Если conic = 0.5, то кривые поверхности s(const, v) являются дугами параболы. Если 0.05 < conic < 0.5, то кривые поверхности s(const, v) являются дугами эллипса. Если 0.5 < conic < 0.95, то кривые поверхности s(const, v) являются дугами гиперболы. Поверхность может иметь полюс при u = umin и u = umax, если соответствующие края кривых curve0, curve1 и curve2 совпадают.