.. role:: blue :class: blue Поверхность скругления MbChannelSurface ======================================= .. _MbChannelSurface_Fillet_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbChannelSurface` объявлен в файле *surf\_channel\_surface.h*. Поверхность скругления с переменным радиусом :blue:`MbChannelSurface` является наследником поверхности скругления :blue:`MbFilletSurface`. Поверхность скругления с переменным радиусом описывается кривой на первой сопрягаемой поверхности :ref:`MbFilletSurface ` *curve1*, кривой на второй сопрягаемой поверхности :ref:`MbSurfaceCurve ` *curve2*, кривой :blue:`MbCurve3D` *curve0*, функцией :blue:`MbFunction` *weights0* веса кривой *curve0*, функцией изменения радиуса :blue:`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*. Поверхность не может быть периодической по второму параметру. В методе :blue:`PointOn`\( double *u*, double *v*, :blue:`MbCartPoint3D` & **s** ) радиус-вектор поверхности **s** описывается векторной функцией .. math:: s(u, v) = \frac{(1 - v)^{2}\,\mathbf{curve1}(u) + 2 v (1 - v)\,\mathit{\text{weight}}0(u)\,\mathbf{curve0}(u) + v^{2}\,\mathbf{curve2}(u)}{(1 - v)^{2} + 2 v (1 - v)\,\mathit{\text{weight}}0(u) + v^{2}}. Каждая кривая **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. .. figure:: /MODELER/SURFACES/pictures/O.5.26.1.png :width: 12cm :align: center Рис. 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* совпадают.