Поверхность вращения MbRevolutionSurface

Класс MbRevolutionSurface объявлен в файле surf_revolution_surface.h.

Поверхность вращения MbRevolutionSurface принадлежит к группе поверхностей движения MbSweptSurface. Поверхность вращения является частным случаем поверхности движения с направляющей кривой в форме окружности или её дуги. Поверхность вращения описывается образующей кривой MbCurve3D * curve, локальной системой координат MbPlacement3D position, вектор position.axisZ которой является осью вращения, признаком расположения кривой и оси вращения в одной плоскости planeData, признаком наличия полюса поверхности при начальном значении первого параметра poleMin, признаком наличия полюса поверхности при конечном значении первого параметра poleMax, значениями первого параметра поверхности в полюсах поверхности uPoleMin, uPoleMax, если соответствующий полюс присутствует. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.

Первый параметр поверхности u совпадает с параметром образующей кривой. Первый параметр поверхности принимает значения на отрезке umin ≤ u ≤ umax, который соответствует области определения образующей кривой. Поверхность может быть периодической по первому параметру, если периодической является образующая кривая.

Второй параметр поверхности v принимает значения на отрезке: vmin ≤ v ≤ vmax. Значения v = 0 и v = 2π соответствуют точке на образующей кривой. Поверхность может быть периодической по второму параметру. У периодической поверхности vmax - vmin = 2π, у не периодической поверхности vmax - vmin < 2π.

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

\begin{equation} \mathbf{s}(u, v) = \mathbf{position.origin} + \left( \mathbf{curve}(u) - \mathbf{position.origin} \right) \mathbf{M}(v), \end{equation}

где M(v) — матрица вращения. Заметим, что умножение вектора (curve(u) - position.origin) на матрицу M(v) выполняется справа. Матрица вращения имеет вид

\begin{equation} M(v) = A^{-1} \cdot \begin{bmatrix} \cos v & -\sin v & 0 \\ \sin v & \cos v & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot A = \begin{bmatrix} \mathbf{position.axisX} \\ \mathbf{position.axisY} \\ \mathbf{position.axisZ} \end{bmatrix}^{-1} \cdot \begin{bmatrix} \cos v & -\sin v & 0 \\ \sin v & \cos v & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} \mathbf{position.axisX} \\ \mathbf{position.axisY} \\ \mathbf{position.axisZ} \end{bmatrix}. \end{equation}

Матрица A является матрицей преобразования координат радиуса-вектора точки из локальной системы координат position в глобальную систему координат. Строки матрицы A составлены из компонент базисных векторов локальной системы координат. Матрица M(v) переводит вектор curve(u) - position.origin в локальную систему координат, поворачивает его в ней на угол v вокруг оси вращения и возвращает повёрнутый вектор обратно в глобальную систему координат. Поверхность вращения приведена на рис. 1:

../../../../_images/O.5.8.1.png

Рис. 1

Если начальный или конечный край образующей кривой проходит через ось вращения, то поверхность имеет полюс для параметра umin или umax соответственно. Для граничных значений второго параметра поверхности должно соблюдаться неравенство: vmin < vmax.

Вращение точек образующей кривой выполняется по дуге вокруг вектора position.axisZ от вектора position.axisX в направлении вектора position.axisY. Локальная система координат position может быть как правой, так и левой.