Поверхность перемещения MbExpansionSurface

Класс MbExpansionSurface объявлен в файле surf_expansion_surface.h.

Поверхность перемещения MbExpansionSurface принадлежит к группе поверхностей движения MbSweptSurface. Поверхность перемещения является частным случаем поверхности движения с криволинейной направляющей кривой. Поверхность перемещения описывается образующей кривой MbCurve3D * curve, направляющей кривой MbCurve3D * spine, точкой в начале направляющей MbCartPoint3D origin. Поверхность образована перемещением образующей кривой вдоль направляющей кривой. В частном случае образующая кривая поверхности перемещения может менять свою форму. В последнем случае в данных кривой присутствует вторая образующая кривая brink, точка в конце направляющей ending, начальный параметр tmin кривой brink и производная dt параметра кривой brink по параметру образующей кривой curve. Производная dt определяется равенством

\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. Поверхность может быть периодической по второму параметру, если периодической является направляющая кривая и отсутствует вторая образующая кривая.

В методе PointOn( double u, double v, MbCartPoint3D & s ) в общем случае радиус-вектор поверхности s описывается векторной функцией

\begin{equation} \mathbf{s}(u, v) = \mathbf{spine}(v) + \mathbf{curve}(u) - \mathbf{origin} \end{equation}

Поверхность перемещения в общем случае приведена на рис. 1.

../../../../_images/O.5.9.1.png

Рис. 1

В методе PointOn( double u, double v, MbCartPoint3D & s ) в частном случае радиус-вектор поверхности s описывается векторной функцией

\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}

где

\begin{equation} w = \frac{v - \mathit{vmin}}{\mathit{vmax} - \mathit{vmin}}, \quad t = \mathit{tmin} + (u - \mathit{umin}) \cdot \mathit{dt}. \end{equation}

Поверхность перемещения в частном случае приведена на рис. 2:

../../../../_images/O.5.9.1.png

Рис. 2

Для отсутствия самопересечений поверхности образующая и направляющие кривые не должны иметь параллельных друг другу участков. В определённых случаях поверхность перемещения может иметь особые точки.