.. role:: blue :class: blue MbCoverSurface Coons Surface ============================ .. _MbCoverSurface_Coons_Surface_: .. версия ядра: 1180ХХ Class :blue:`MbCoverSurface` is declared in file *surf\_cover\_surface.h*. Coons surface MbCoverSurface is defined by curves :ref:`MbCurve3D ` **curve0**, **curve1**, **curve2**, **curve3**, four points :ref:`MbCartPoint3D ` **vertex**\[4], four pairs of boundary values of the parameters of the corresponding curves: *t0min*, *t0max*, *t1min*, *t1max*, *t2min*, *t2max*, *t3min*, *t3max*, a flag of periodicity of the surface in the first parameter *uclosed*, a flag of periodicity of the surface in the second parameter *vclosed*, a flag of the presence of a pole of the surface at the initial value of the first parameter *poleUMin*, a flag of the presence of a pole of the surface at the final value of the first parameter *poleUMax*, a flag of the presence of a pole of the surface at the initial value of the second parameter *poleVMin*, and a flag of the presence of a pole of the surface at the final value of the second parameter *poleVMax*. The surface also has some additional data that are not mandatory and are used to speed up the work of the surface methods. The first parameter of the surface *u* takes values on the segment 0 ≤ *u* ≤ 1. The surface can be periodic in the first parameter if curves **curve0** and **curve2** are periodic. The second parameter of the surface *v* takes values on the segment 0 ≤ *v* ≤ 1. The surface can be periodic in the second parameter if curves **curve1** and **curve3** are periodic. Adjacent curves **curve0**, **curve1**, **curve2**, **curve3** must have intersection points or crossing points with each other. Parameters of the curves *t0min*, *t0max*, *t1min*, *t1max*, *t2min*, *t2max*, *t3min*, *t3max* are computed from the intersection or crossing points of the curves and define the working segments of the curves and points **vertex**\[4]. The directions of the curves are not important for the surface. In method :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) the radius vector of the surface **s** is described by the vector function .. 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} where *w*\ :sub:`0` = 1 - *u*, *w*\ :sub:`1` = 0.5(*u* - *uv*), *w*\ :sub:`2` = 0.5(*u* + *uv*) are the barycentric coordinates of the surface, .. math:: :nowrap: \begin{equation} t_{0} = (1 - u) \cdot t0min + u \cdot t0max \end{equation} is the parameter of curve **curve0**, .. math:: :nowrap: \begin{equation} t_{1} = (1 - v) \cdot t1min + v \cdot t1max \end{equation} is the parameter of curve **curve1**, .. math:: :nowrap: \begin{equation} t_{2} = (1 - u) \cdot t2min + u \cdot t2max \end{equation} is the parameter of curve **curve2**, .. math:: :nowrap: \begin{equation} t_{3} = (1 - v) \cdot t3min + v \cdot t3max \end{equation} is the parameter of curve **curve3**. Coons surface on four crossing curves is shown in Fig. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.18.1.png :width: 12cm :align: center Fig. 1 The shape of the surface depends on the shape of the curves. If adjacent curves intersect at points **vertex**\[4], the surface passes along segments of the curves: for *u* = 0 the surface passes along a segment of curve **curve3**, for *v* = 0 the surface passes along a segment of curve **curve0**, for *u* = 1 the surface passes along a segment of curve **curve1**, and for *v* = 1 the surface passes along a segment of curve **curve2**.