.. role:: blue :class: blue Кинематическая поверхность MbEvolutionSurface ============================================= .. _MbEvolutionSurface_Swept_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbEvolutionSurface` объявлен в файле *surf\_evolution\_surface.h*. Кинематическая поверхность MbEvolutionSurface принадлежит к группе поверхностей движения MbSweptSurface. Кинематическая поверхность является общим случаем поверхности движения с произвольной направляющей кривой. Поверхность вращения описывается образующей кривой :ref:`MbCurve3D ` * **curve**, направляющим объектом :ref:`MbCurve3D ` * **spine**, положением начала направляющей :ref:`MbCartPoint3D ` **origin**. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности. Первый параметр поверхности *u* совпадает с параметром образующей кривой **curve**. Первый параметр поверхности принимает значения на отрезке *umin* ≤ *u* ≤ *umax*, который соответствует области определения образующей кривой. Поверхность может быть периодической по первому параметру, если периодической является образующая кривая. Направляющий объект **spine** заменяет собой направляющую кривую, построен на базе кривой и отличается от последней тем, что может генерировать локальную систему координат, связанную с кривой. Второй параметр поверхности *v* совпадает с параметром кривой направляющего объекта **spine**. Второй параметр поверхности принимает значения на отрезке *vmin* ≤ *v* ≤ *vmax*, который соответствует области определения направляющей кривой. Поверхность может быть периодической по второму параметру, если периодической является направляющая кривая. В методе :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) \mathbf{M}(v), \end{equation} где **M**\(*v*) — матрица, связанная с направляющей кривой. Заметим, что умножение вектора (\ **curve**\ (\ *u*) - \ **origin**\) на матрицу **M**\(*v*) выполняется справа. Матрица **M**\(*v*) имеет вид .. math:: :nowrap: \begin{equation} \mathbf{M}(v) = \mathbf{A}^{-1}(vmin) \cdot \mathbf{A}(v), \end{equation} где матрица **A**\(*v*) является матрицей преобразования координат радиуса-вектора точки из подвижной системы координат, связанной с направляющей кривой, в глобальную систему координат. Матрица **A**\(*v*) зависит от второго параметра поверхности. Строки матрицы **A**\(*v*) составлены из компонент базисных векторов подвижной системы координат: .. math:: :nowrap: \begin{equation} A(v) = \begin{bmatrix} i_{1}(v) \\ i_{2}(v) \\ i_{3}(v) \end{bmatrix}, \end{equation} где **i**\ :sub:`1`\ (*v*) — касательный вектор направляющей кривой, **i**\ :sub:`2`\ (*v*) — вектор, ортогональный **i**\ :sub:`1`\ (*v*) и связанный с вектором **direction** направляющего объекта **spine**, **i**\ :sub:`3`\ (*v*) — вектор, ортогональный **i**\ :sub:`1`\ (*v*) и **i**\ :sub:`2`\ (*v*). Поверхность вращения приведена на рис. 1: .. figure:: /MODELER/SURFACES/pictures/O.5.11.1.png :width: 12cm :align: center Рис. 1 Касательный вектор **i**\ :sub:`1`\ (*v*) вычисляется по направляющей кривой. Вектор **i**\ :sub:`2`\ (*v*) вычисляется из условия плавного изменения при переходе от точки к точке направляющей кривой и ортогональности **i**\ :sub:`1`\ (*v*). Вектор **i**\ :sub:`3`\ (*v*) вычисляется как векторное произведение векторов **i**\ :sub:`1`\ (*v*) и **i**\ :sub:`2`\ (*v*).