.. role:: blue :class: blue Поверхность Кунса MbCoverSurface ================================ .. _MbCoverSurface_Coons_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbCoverSurface` объявлен в файле *surf\_cover\_surface.h*. Поверхность Кунса MbCoverSurface описывается кривыми :ref:`MbCurve3D ` **curve0**, **curve1**, **curve2**, **curve3**, четырьмя точками :ref:`MbCartPoint3D ` **vertex**\[4], четырьмя парами граничных значений параметров соответствующих кривых: *t0min*, *t0max*, *t1min*, *t1max*, *t2min*, *t2max*, *t3min*, *t3max*, признаком периодичности поверхности по первому параметру *uclosed*, признаком периодичности поверхности по второму параметру *vclosed*, признаком наличия полюса поверхности при начальном значении первого параметра *poleUMin*, признаком наличия полюса поверхности при конечном значении первого параметра *poleUMax*, признаком наличия полюса поверхности при начальном значении второго параметра *poleVMin*, признаком наличия полюса поверхности при конечном значении второго параметра *poleVMax*. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности. Первый параметр поверхности *u* принимает значения на отрезке 0 ≤ *u* ≤ 1. Поверхность может быть периодической по первому параметру, если периодическими являются кривые **curve0** и **curve2**. Второй параметр поверхности *v* принимает значения на отрезке 0 ≤ *v* ≤ 1. Поверхность может быть периодической по второму параметру, если периодическими являются кривые **curve1** и **curve3**. Соседние кривые **curve0**, **curve1**, **curve2**, **curve3** должны иметь точки пересечения или точки скрещения друг с другом. Параметры кривых *t0min*, *t0max*, *t1min*, *t1max*, *t2min*, *t2max*, *t3min*, *t3max* вычисляются по точкам пересечения или скрещения кривых и определяют рабочие участки кривых и точки **vertex**\[4]. Направления кривых для поверхности не имеют значения. В методе :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) радиус-вектор поверхности **s** описывается векторной функцией .. math:: :nowrap: \begin{equation} \mathbf{s}(u, v) = (1 - v) \left( \mathbf{curve0}(t_{0}) - (1 - u) \mathbf{vertex}[0] \right) + u \left( \mathbf{curve1}(t_{1}) - (1 - v) \mathbf{vertex}[1] \right) + v \left( \mathbf{curve2}(t_{2}) - u \mathbf{vertex}[2] \right) + \\ (1 - u) \left( \mathbf{curve3}(t_{3}) - v \mathbf{vertex}[3] \right), \end{equation} где *w*\ :sub:`0` = 1 - *u*, *w*\ :sub:`1` = 0.5(*u* - *uv*), *w*\ :sub:`2` = 0.5(*u* + *uv*) — барицентрические координаты поверхности, .. math:: :nowrap: \begin{equation} t_{0} = (1 - u) \cdot t0min + u \cdot t0max \end{equation} — параметр кривой **curve0**, .. math:: :nowrap: \begin{equation} t_{1} = (1 - v) \cdot t1min + v \cdot t1max \end{equation} — параметр кривой **curve1**, .. math:: :nowrap: \begin{equation} t_{2} = (1 - u) \cdot t2min + u \cdot t2max \end{equation} — параметр кривой **curve2**, .. math:: :nowrap: \begin{equation} t_{3} = (1 - v) \cdot t3min + v \cdot t3max \end{equation} — параметр кривой **curve3**. Поверхность Кунса на четырёх скрещивающихся кривых приведена на рис. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.18.1.png :width: 12cm :align: center Рис. 1 Форма поверхности зависит от формы кривых. Если соседние кривые пересекаются в точках **vertex**\[4], то поверхность проходит по участкам кривых: при *u* = 0 поверхность проходит по участку кривой **curve3**, при *v* = 0 поверхность проходит по участку кривой **curve0**, при *u* = 1 поверхность проходит по участку кривой **curve1**, при *v* = 1 поверхность проходит по участку кривой **curve2**.