.. role:: blue :class: blue MbCoonsPatchSurface Coons Surface ======================================= .. _MbCoonsPatchSurface_Coons_Surface_: .. версия ядра: 1180ХХ Class :blue:`MbCoonsPatchSurface` is declared in file *surf\_coons\_surface.h*. Bicubic Coons patch surface MbCoonsPatchSurface is constructed similarly to Coons surface :ref:`MbCoverSurface ` and has additional conditions for the radius vector at the edges. Bicubic Coons patch surface MbCoonsPatchSurface is defined by four curves :blue:`MbCurve3D` * **curve0**, **curve1**, **curve2**, **curve3**, derivative **curve0V** of the surface radius vector along curve **curve0** with respect to the second surface parameter, derivative **curve1U** of the surface radius vector along curve **curve1** with respect to the first surface parameter, derivative **curve2V** of the surface radius vector along curve **curve2** with respect to the second surface parameter, derivative **curve3U** of the surface radius vector along curve **curve3** with respect to the first surface parameter, four corner points **vertex**\[4], four derivatives with respect to the first surface parameter at the corner points **vertexU**\[4], four derivatives with respect to the second surface parameter at the corner points **vertexV**\[4], four mixed derivatives with respect to the first and second surface parameters at the corner points **vertexUV**\[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*, and a flag of periodicity of the surface in the second parameter *vclosed*. 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**, **curve2**, **curveV0**, **curveV2** are periodic and curves **curveU1** and **curveU3** coincide. 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**, **curveU1**, **curveU3** are periodic and curves **curveV0** and **curveV2** coincide. 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], **vertexU**\[4], **vertexV**\[4], **vertexUV**\[4]. The directions of the curves are not important for the surface, but the parameterization of pairs of curves **curve0** and **curveV0**, **curve2** and **curveV2**, **curve1** and **curveU1**, **curve3** and **curveU3** must coincide. In method :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) the radius vector of the surface **s** is described by a vector function given in the book "Geometric Modelling" by N. N. Golovanov. Bicubic Coons patch surface is constructed from precomputed data and is used to construct blends and patches with edge continuity conditions. Bicubic Coons patch surface is shown in Fig. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.19.1.png :width: 12cm :align: center Fig. 1 The shape of the surface depends on the shape of the curves and derivatives. 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**.