.. role:: blue :class: blue MbExpansionSurface Motion Surface ================================== .. _MbExpansionSurface_Motion_Surface_: .. версия ядра: 1180ХХ The :blue:`MbExpansionSurface` class is declared in the *surf\_expansion\_surface.h* file. The :blue:`MbExpansionSurface` motion surface belongs to the group of swept surfaces :blue:`MbSweptSurface`. The motion surface is a special case of a swept surface with a curvilinear spine curve. The motion surface is described by the generatrix curve :ref:`MbCurve3D ` * **curve**, the spine curve :ref:`MbCurve3D ` * **spine**, and the point at the start of the spine :blue:`MbCartPoint3D` **origin**. The surface is formed by moving the generatrix curve along the spine curve. In a special case, the generatrix curve of the motion surface can change its shape. In the latter case, the curve data contain the second generatrix curve **brink**, the point at the end of the spine **ending**, the initial parameter *tmin* of the **brink** curve, and the derivative *dt* of the parameter of the **brink** curve with respect to the parameter of the generatrix curve **curve**. The derivative *dt* is defined by .. math:: :nowrap: \begin{equation} \mathit{dt} = \frac{\mathit{tmax} - \mathit{tmin}}{\mathit{umax} - \mathit{umin}}, \end{equation} where *tmax* is the terminal parameter of the **brink** curve. In the general case, the pointer to the second generatrix curve **brink** can be null, which means that the second generatrix curve is absent. The first surface parameter *u* coincides with the parameter of the generatrix curve **curve**. The first surface parameter takes values on the interval *umin* ≤ *u* ≤ *umax*, which corresponds to the domain of the generatrix curve. The surface can be periodic with respect to the first parameter if the generatrix curve is periodic. The second surface parameter *v* coincides with the parameter of the spine curve and takes values on the interval *vmin* ≤ *v* ≤ *vmax*. The surface can be periodic with respect to the second parameter if the spine curve is periodic and the second generatrix curve is absent. In the :blue:`PointOn`\( double *u*, double *v*, :blue:`MbCartPoint3D` & **s** ) method, in the general case, the position vector of the surface **s** is described by the vector function .. math:: :nowrap: \begin{equation} \mathbf{s}(u, v) = \mathbf{spine}(v) + \mathbf{curve}(u) - \mathbf{origin} \end{equation} The motion surface in the general case is shown in Fig. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.9.1.png :width: 12cm :align: center Fig. 1 In the :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) method, in the special case, the position 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) (1 - w) + \left( \mathbf{brink}(t) - \mathbf{ending} \right) w, \end{equation} where .. math:: :nowrap: \begin{equation} w = \frac{v - \mathit{vmin}}{\mathit{vmax} - \mathit{vmin}}, \quad t = \mathit{tmin} + (u - \mathit{umin}) \cdot \mathit{dt}. \end{equation} The motion surface in the special case is shown in Fig. 2: .. figure:: /MODELER/SURFACES/pictures/O.5.9.1.png :width: 12cm :align: center Fig. 2 To avoid self-intersections of the surface, the generatrix and spine curves must not have segments that are parallel to each other. In certain cases, the motion surface may have singular points.