.. role:: blue :class: blue MbSurfaceCurve Curve on Surface ===================================== .. _MbSurfaceCurve_Curve_on_Surface_: .. версия ядра: The :blue:`MbSurfaceCurve` class is declared in the *cur_surface_curve.h* file. A curve on surface MbSurfaceCurve is defined by a surface :ref:`MbSurface ` **surface**, a two-dimensional curve :ref:`MbCurve ` **curve** in the surface parameter space, and a Boolean flag of curve periodicity **closed**. The curve also contains some additional data that is optional and is used to speed up the work of the curve methods. A curve on a surface represents a mapping of a curve from the two-dimensional surface parameter space into three-dimensional space. The two-dimensional curve *curve* may lie outside the domain of the surface parameters. The parameter domain of the surface curve coincides with the parameter domain of the two-dimensional curve **curve**. In the :blue:`PointOn`\( double & *t*, :blue:`MbCartPoint3D` & *r*) method, the radius vector of the curve *r* is described by the vector function *r*\( *t* ) = *surface*\( *point.x*, *point.y* ), where *point* is a point of the two-dimensional curve that is computed by the *curve* → :blue:`PointOn`\( *t*, *point* ) method. The *x* and *y* coordinates of the two-dimensional point **point** serve as the *u* and *v* parameters of the surface *surface*\( *u*, *v* ). The curve on the surface is constructed by introducing a dependence of the surface parameters *u* and *v* on a common parameter *t*: *u* = *u*\( *t* ), *v* = *v*\( *t* ). This dependence is defined by the two-dimensional curve *curve*. A curve on a surface is shown in Fig. 1: .. figure:: /MODELER/CURVES/pictures/O.4.20.1.png :width: 12cm :align: center Fig. 1 The two-dimensional curve in the domain of the surface parameters is shown in Fig. 2: .. figure:: /MODELER/CURVES/pictures/O.4.20.2.png :width: 15cm :align: center Fig. 2 The derivative of a surface curve is computed as a composite function .. math:: \frac{\mathit{dr}(t)}{\mathit{\text{dt}}} = \frac{\partial\mathbf{\text{surface}}(u,v)}{\partial u}\mathbf{\text{derive}}\text{.}{x + \frac{\partial\mathbf{\text{surface}}(u,v)}{\partial v}}\mathbf{\text{derive}}\text{.}y, where *derive* is the derivative of the two-dimensional curve that is computed by the *curve* → :blue:`FirstDer`\( *t*, *derive* ) method. The derivative of the curve on the surface lies in the tangent plane of the surface constructed at the point under consideration. A curve on a surface can be periodic if the two-dimensional curve *curve* is periodic or if the surface *surface* is periodic and the curve *curve* has matching derivatives at its ends and the end points of the curve are shifted by the corresponding period of the surface that is periodic in the first or second parameter *surface*. The surface *surface* of a curve on a surface can be any surface except for a surface bounded by curves :ref:`MbCurveBoundedSurface `. If a curve on a surface bounded by curves needs to be constructed, then the base surface *MbCurveBoundedSurface* is used as the surface.