.. role:: blue :class: blue Поверхность скругления MbFilletSurface ====================================== .. _MbFilletSurface_Fillet_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbFilletSurface` объявлен в файле *surf\_fillet\_surface.h*. Поверхность скругления :blue:`MbFilletSurface` принадлежит к группе поверхностей сопряжения :blue:`MbSmoothSurface`. Поверхность скругления описывается кривой на первой сопрягаемой поверхности :ref:`MbSurfaceCurve ` *curve1*, кривой на второй сопрягаемой поверхности :ref:`MbSurfaceCurve ` *curve2*, кривой :blue:`MbCurve3D` *curve0*, функцией :ref:`MbFunction ` *weights0* веса кривой *curve0*, способом построения скругления *form*, радиусами скругления *distance1* и *distance2*, коэффициентом формы *conic*, граничными значениями *umin* и *umax* параметра кривых *curve1*, *curve2*, *curve0* и функции *weights0*, граничными значениями второго параметра поверхности *vmin* и *vmax*, признаком периодичности первого параметра поверхности *uclosed*, признаком наличия полюса поверхности при начальном значении первого параметра *poleMin*, признаком наличия полюса поверхности при конечном значении первого параметра *poleMax*, признаком равномерной параметризации поверхности по второму параметру *even*, признаком гладкого сопряжения поверхности с сопрягаемыми поверхностями *equable*, признаком *byCurve1* наличия кромки вдоль кривой *curve2* или *curve1* (*equable* = false). У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности. Кривые *curve1*, *curve2*, *curve0* и функция *weights0* согласованы друг с другом и имеют одинаковую область определения параметра. Первый параметр поверхности *u* совпадает с параметром кривых *curve1*, *curve2*, *curve0* и функции *weights0*, который является общим для них. Первый параметр поверхности принимает значения на отрезке *umin* ≤ *u* ≤ *umax*, который соответствует области определения кривых *curve1*, *curve2*, *curve0* и функции *weights0*. Поверхность может быть периодической по первому параметру, если периодическими являются кривые *curve1*, *curve2*, *curve0* и функция *weights0*. Второй параметр поверхности *v* принимает значения на отрезке *vmin* ≤ *v* ≤ *vmax*. Значение *v* = *vmin* соответствует точке на кривой *curve1*, значение *v* = *vmax* соответствует точке на кривой *curve2*. Поверхность не может быть периодической по второму параметру. В методе :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) радиус-вектор поверхности **s** описывается векторной функцией .. math:: s(u, v) = \frac{(1 - v)^{2}\,\mathbf{curve1}(u) + 2 t (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}}. .. + 2 v (1 - v) ? Каждая кривая **s**\(*const*, *v*) с фиксированным первым параметром поверхности *u* = const является NURBS-кривой третьего порядка, построенной по точкам *curve1*\(\ *u*\), *curve0*\(\ *u*\), *curve2*\(\ *u*\), у которой крайние точки имеют единичный вес, а средняя точка *curve0*\(*u*\) имеет вес *weights0*\(*u*\). При *conic* = \_ARC\_ функция *weights0*\(*u*\) вычисляется из условия, что все кривые **s**\(*const*, *v*) являются дугами окружности. При *conic* ≠ \_ARC\_ функция *weights0* является константой и равна коэффициенту формы *conic*. Поверхность скругления приведена на рис. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.25.1.png :width: 12cm :align: center Рис. 1 В общем случае поверхность гладко сопрягается с поверхностями, на которых расположены кривые *curve1*\(*u*\) и *curve2*\(*u*\). В этом случае параметр *equable* = true. Если *equable* = false, то по одной из кривых *curve1* или *curve2* сопряжение является гладким, а другая кривая является кромкой. При *byCurve1* = true сопряжение является гладким по кривой *curve1*, в противном случае сопряжение является гладким по кривой *curve2*. Поверхность скругления с сохранением кромки приведена на рис. 2. .. figure:: /MODELER/SURFACES/pictures/O.5.25.2.png :width: 12cm :align: center Рис. 2 Если радиусы скругления *distance1* и *distance2* не равны, то поверхность скругления в сечении **s**\(*const*, *v*) с параметрами *u* = const описывает эллипс. Эллиптическая поверхность скругления приведена на рис. 3. .. figure:: /MODELER/SURFACES/pictures/O.5.25.3.png :width: 12cm :align: center Рис. 3 В общем случае способ скругления *form* = st\_Fillet. Если способ скругления *form* = st\_Span, то *distance1* = *distance2* и равны расстоянию между кривыми *curve1* и *curve2*, а радиус поверхности скругления является переменным. Поверхность скругления с сохранением расстояния между опорными кривыми приведена на рис. 4. .. figure:: /MODELER/SURFACES/pictures/O.5.25.4.png :width: 12cm :align: center Рис. 4 Кривые поверхности **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* совпадают.