.. role:: blue :class: blue Поверхность перемещения MbExpansionSurface =========================================== .. _MbExpansionSurface_Motion_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbExpansionSurface` объявлен в файле *surf\_expansion\_surface.h*. Поверхность перемещения :blue:`MbExpansionSurface` принадлежит к группе поверхностей движения :blue:`MbSweptSurface`. Поверхность перемещения является частным случаем поверхности движения с криволинейной направляющей кривой. Поверхность перемещения описывается образующей кривой :ref:`MbCurve3D ` * **curve**, направляющей кривой :ref:`MbCurve3D ` * **spine**, точкой в начале направляющей :blue:`MbCartPoint3D` **origin**. Поверхность образована перемещением образующей кривой вдоль направляющей кривой. В частном случае образующая кривая поверхности перемещения может менять свою форму. В последнем случае в данных кривой присутствует вторая образующая кривая **brink**, точка в конце направляющей **ending**, начальный параметр *tmin* кривой **brink** и производная *dt* параметра кривой **brink** по параметру образующей кривой **curve**. Производная *dt* определяется равенством .. math:: :nowrap: \begin{equation} \mathit{dt} = \frac{\mathit{tmax} - \mathit{tmin}}{\mathit{umax} - \mathit{umin}}, \end{equation} где *tmax* — конечный параметр кривой **brink**. В общем случае указатель на вторую образующую кривую **brink** может быть равен нулю, что означает, что вторая образующая кривая отсутствует. Первый параметр *u* поверхности совпадает с параметром образующей кривой **curve**. Первый параметр поверхности принимает значения на отрезке *umin* ≤ *u* ≤ *umax*, который соответствует области определения образующей кривой. Поверхность может быть периодической по первому параметру, если периодической является образующая кривая. Второй параметр поверхности *v* совпадает с параметром направляющей кривой и принимает значения на отрезке: *vmin* ≤ *v* ≤ *vmax*. Поверхность может быть периодической по второму параметру, если периодической является направляющая кривая и отсутствует вторая образующая кривая. В методе :blue:`PointOn`\( double *u*, double *v*, :blue:`MbCartPoint3D` & **s** ) в общем случае радиус-вектор поверхности **s** описывается векторной функцией .. math:: :nowrap: \begin{equation} \mathbf{s}(u, v) = \mathbf{spine}(v) + \mathbf{curve}(u) - \mathbf{origin} \end{equation} Поверхность перемещения в общем случае приведена на рис. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.9.1.png :width: 12cm :align: center Рис. 1 В методе :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) в частном случае радиус-вектор поверхности **s** описывается векторной функцией .. 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} где .. 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} Поверхность перемещения в частном случае приведена на рис. 2: .. figure:: /MODELER/SURFACES/pictures/O.5.9.1.png :width: 12cm :align: center Рис. 2 Для отсутствия самопересечений поверхности образующая и направляющие кривые не должны иметь параллельных друг другу участков. В определённых случаях поверхность перемещения может иметь особые точки.