.. role:: blue :class: blue MbEvolutionSurface Swept Surface ==================================== .. _MbEvolutionSurface_Swept_Surface_: .. версия ядра: 1180ХХ Class :blue:`MbEvolutionSurface` is declared in file *surf\_evolution\_surface.h*. Kinematic surface MbEvolutionSurface belongs to the group of swept surfaces MbSweptSurface.Kinematic surface is a general case of a swept surface with an arbitrary guiding curve. The swept surface is defined by a generatrix curve :ref:`MbCurve3D ` * **curve**, a guiding object :ref:`MbCurve3D ` * **spine**, and the start position of the guiding curve :ref:`MbCartPoint3D ` **origin**. 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* coincides with the parameter of the generatrix curve **curve**. The first parameter of the surface takes values on the segment *umin* ≤ *u* ≤ *umax*, which corresponds to the domain of the generatrix curve. The surface can be periodic in the first parameter if the generatrix curve is periodic. The guiding object **spine** replaces the guiding curve, is constructed on the basis of the curve, and differs from it in that it can generate a local coordinate system associated with the curve. The second parameter of the surface *v* coincides with the curve parameter of the guiding object **spine**. The second parameter of the surface takes values on the segment *vmin* ≤ *v* ≤ *vmax*, which corresponds to the domain of the guiding curve. The surface can be periodic in the second parameter if the guiding curve is periodic. 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) = \mathbf{spine}(v) + \left( \mathbf{curve}(u) - \mathbf{origin} \right) \mathbf{M}(v), \end{equation} where **M**\(*v*) is a matrix associated with the guiding curve. Note that multiplication of the vector (\ **curve**\ (\ *u*) - \ **origin**\) by matrix **M**\(*v*) is performed on the right. Matrix **M**\(*v*) has the form .. math:: :nowrap: \begin{equation} \mathbf{M}(v) = \mathbf{A}^{-1}(vmin) \cdot \mathbf{A}(v), \end{equation} where matrix **A**\(*v*) is a coordinate transformation matrix of the radius vector of a point from the moving coordinate system associated with the guiding curve to the global coordinate system. Matrix **A**\(*v*) depends on the second parameter of the surface. The rows of matrix **A**\(*v*) are composed of the components of the basis vectors of the moving coordinate system: .. math:: :nowrap: \begin{equation} A(v) = \begin{bmatrix} i_{1}(v) \\ i_{2}(v) \\ i_{3}(v) \end{bmatrix}, \end{equation} where **i**\ :sub:`1`\ (*v*) is the tangent vector of the guiding curve, **i**\ :sub:`2`\ (*v*) is a vector orthogonal to **i**\ :sub:`1`\ (*v*) and associated with vector **direction** of the guiding object **spine**, and **i**\ :sub:`3`\ (*v*) is a vector orthogonal to **i**\ :sub:`1`\ (*v*) and **i**\ :sub:`2`\ (*v*). The swept surface is shown in Fig. 1: .. figure:: /MODELER/SURFACES/pictures/O.5.11.1.png :width: 12cm :align: center Fig. 1 The tangent vector **i**\ :sub:`1`\ (*v*) is computed from the guiding curve. Vector **i**\ :sub:`2`\ (*v*) is computed from the condition of smooth variation when moving from point to point along the guiding curve and orthogonality to **i**\ :sub:`1`\ (*v*). Vector **i**\ :sub:`3`\ (*v*) is computed as the cross product of vectors **i**\ :sub:`1`\ (*v*) and **i**\ :sub:`2`\ (*v*).