Спиральная поверхность MbSpiralSurface
Класс MbSpiralSurface объявлен в файле surf_spiral_surface.h.
Спиральная поверхность MbSpiralSurface принадлежит к группе поверхностей движения MbSweptSurface. Спиральная поверхность является частным случаем поверхности движения с направляющей кривой в форме цилиндрической спирали. Спиральная поверхность описывается образующей кривой MbCurve3D * curve, локальной системой координат MbPlacement3D position, вектор position.axisZ которой является осью спирали, радиусом спирали radius, шагом спирали step, положением начала спирали origin и граничными параметрами спирали vmin и vmax. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Ось спирали совпадает с координатной осью position.axisZ локальной системы координат. Первый параметр поверхности u совпадает с параметром образующей кривой. Первый параметр поверхности принимает значения на отрезке umin ≤ u ≤ umax, который соответствует области определения образующей кривой. Поверхность может быть периодической по первому параметру, если периодической является образующая кривая.
Второй параметр поверхности v принимает значения на отрезке: vmin ≤ v ≤ vmax. Значение v = 0 соответствует точке на образующей кривой. Значение второго параметра v, равное 2π, соответствует точкам образующей кривой, смещённым на вектор position.axisZ, умноженный на step. Поверхность не может быть периодической по второму параметру.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией
где M(v) — матрица вращения. Заметим, что умножение вектора (curve(u) - origin) на матрицу M(v) выполняется справа. Матрица вращения имеет вид
Матрица A является матрицей преобразования координат радиуса-вектора точки из локальной системы координат position в глобальную систему координат. Строки матрицы A составлены из компонент базисных векторов локальной системы координат. Матрица M(v) переводит вектор curve(u) - origin в локальную систему координат, поворачивает его в ней на угол v вокруг оси вращения и возвращает повёрнутый вектор обратно в глобальную систему координат. Спиральная поверхность приведена на рис. 1:
Рис. 1
Для граничных значений второго параметра поверхности должно соблюдаться неравенство: vmin < vmax.