.. role:: blue :class: blue Поверхность соединения MbJoinSurface ==================================== .. _MbJoinSurface_Joint_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbJoinSurface` объявлен в файле *surf\_joint\_surface.h*. Поверхность соединения :blue:`MbJoinSurface` описывается множеством кривых RPArray< :ref:`MbCurve3D ` > **curves**, узловым вектором *knots*, порядком сплайна *degree*, граничными значениями первого параметра поверхности *umin* и *umax*, признаком периодичности первого параметра поверхности *closedU*, признаком периодичности второго параметра поверхности *closedV*, признаком наличия полюса поверхности при граничных значениях первого параметра *isPoleUmin*, *isPoleUmax*, признаком наличия полюса поверхности при граничных значениях второго параметра *isPoleUmin*, *isPoleUmax*. Кривые **curves** согласованы друг с другом: имеют одинаковое направление и одинаковую область определения параметра. Первый параметр поверхности *u* совпадает с параметром кривых **curves**, который является общим для них. Первый параметр поверхности принимает значения на отрезке *umin* ≤ *u* ≤ *umax*, который соответствует области определения кривых **curves**. Поверхность может быть периодической по первому параметру, если периодическими являются все кривые **curves**. Пусть узловой вектор *knots* содержит *knotsCount* элементов, а количество кривых в множестве **curves** равно *curvesCount*. Количества элементов в множествах связаны равенством *curvesCount* + *degree* = *knotsCount*. Второй параметр поверхности *v* принимает значения на отрезке *vmin* ≤ *v* ≤ *vmax*, где *vmin* = *knots*\[*degree* − 1], *vmax* = *knots*\[*knotsCount* − *degree*]. Поверхность не может быть периодической по второму параметру. В методе :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) радиус-вектор поверхности **s** описывается векторной функцией .. math:: s(u, v) = \frac{\sum\limits_{j = 0}^{\mathit{\text{curvesCount}} - 1}{N_j^{degree}(v)\mathbf{\text{curves}}\lbrack j\rbrack(u)}}{\sum\limits_{j = 0}^{\mathit{\text{curvesCount}} - 1}{N_j^{degree}(v)}}, где :math:`N_j^{degree}(v)` — B-сплайны порядка *degree* для *j*-ой кривой **curves**\[*j*]. Поверхность соединения приведена на рисунке: .. figure:: /MODELER/SURFACES/pictures/O.5.21.1.png :width: 12cm :align: center Каждая кривая **s**\(*const*, *v*) с фиксированным первым параметром поверхности *u* = const является NURBS-кривой порядка *degree*, построенной по точкам **curves**\[*i*]\(*const*).