Спираль переменного радиуса MbCurveSpiral
Класс MbCurveSpiral объявлен в файле cur_curve_spiral.h.
Спираль переменного радиуса является наследником кривой MbSpiral. Спираль описывается локальной системой координат MbPlacement3D position, двумерной кривой curve, задающей закон изменения радиуса, шагом спирали step, двумя граничными параметрами спирали tmin и tmax. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой.
Ось спирали совпадает с координатной осью position.axisZ локальной системы координат. Двумерная кривая curve располагается в плоскости XZ локальной системы координат и определяет закон изменения радиуса спирали. Ось position.axisZ служит осью абсцисс, а ось position.axisX служит осью ординат двумерного пространства кривой curve. Начало двумерной системы координат кривой curve совпадает с началом локальной системы координат position. Радиус спирали равен ординате точек двумерной кривой curve. Параметры tmin и tmax являются углами и отсчитываются от вектора position.axisX к вектору position.axisY. Значения углов, кратные 2π, соответствуют точке кривой в плоскости XZ локальной системы координат.
В методе PointOn( double & t, MbCartPoint & r) радиус-вектор кривой r описывается векторной функцией
где radius(t) — локальный радиус. Локальный радиус radius(t) вычисляется следующим образом. По заданному параметру t определяем абсциссу t·step / 2π искомой двумерной точки кривой. Далее определяем точку пересечения кривой curve и вертикальной прямой, пересекающей ось абсцисс в точке t·step / 2π. Ордината двумерной точки пересечения curve и вертикальной прямой равна искомому радиусу спирали radius(t). Локальный радиус равен расстоянию от локальной оси абсцисс до точки пересечения вертикальной прямой с кривой curve в двумерном пространстве плоскости XZ локальной системы координат position.
Спираль переменного радиуса приведена на рисунке:
Кривая curve должна располагаться выше оси абсцисс и не должна пересекать ось абсцисс своей двумерной системы координат. Кривая curve не должна иметь вертикальных касательных. Для граничных параметров должно выполняться неравенство tmin < tmax. Кривая не может быть периодической.
Локальная система координат position может быть как правой, так и левой.