Поверхность тора MbTorusSurface

Класс MbTorusSurface объявлен в файле surf_torus_surface.h.

Поверхность тора MbTorusSurface принадлежит к группе элементарных поверхностей MbElementarySurface. Поверхность тора описывается радиусом центров majorRadius и радиусом трубки minorRadius, заданными в локальной системе координат MbPlacement3D position.

Первый параметр поверхности отсчитывается по дуге от вектора position.axisX в направлении вектора position.axisY. Первый параметр поверхности u принимает значения на отрезке: umin ≤ u ≤ umax. Значения u = 0 и u = 2π соответствуют точке на плоскости XZ. Поверхность может быть периодической по первому параметру. У периодической поверхности umax - umin = 2π, у не периодической поверхности umax - umin < 2π.

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

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

\begin{equation} \mathbf{s}(u, v) = \mathbf{position.origin} + \left( \mathit{majorRadius} + \mathit{minorRadius} \cdot \cos(v) \right) \left( \cos(u)\, \mathbf{position.axisX} + \sin(u)\, \mathbf{position.axisY} \right) + \\ \mathit{minorRadius} \cdot \sin(v)\, \mathbf{position.axisZ} \end{equation}

Поверхность тора приведена на рисунке:

../../../../_images/O.5.6.1.png

Радиус трубки должен быть больше нуля: minorRadius > 0. Радиус центров должен быть не меньше радиуса трубки, взятого с обратным знаком: majorRadius > -minorRadius. Если majorRadius < minorRadius, то поверхность имеет полюс для параметра v = arccos(majorRadius / minorRadius) и v = 2π - arccos(majorRadius / minorRadius). Для граничных параметров поверхности должны соблюдаться неравенства: umin < umax, vmin < vmax.

Локальная система координат position может быть как правой, так и левой. Если локальная система координат правая, то нормаль направлена от трубки поверхности, если локальная система координат левая, то нормаль направлена внутрь трубки поверхности.