Спираль переменного радиуса 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 описывается векторной функцией

\[\mathbf{r}(t) = \mathbf{position.origin} + radius(t) \left( \cos(t) \cdot \mathbf{position.axisX} + \sin(t) \cdot \mathbf{position.axisY} \right) + \left( t \cdot \frac{step}{2\pi} \right) \mathbf{position.axisZ},\]

где radius(t) — локальный радиус. Локальный радиус radius(t) вычисляется следующим образом. По заданному параметру t определяем абсциссу t·step / 2π искомой двумерной точки кривой. Далее определяем точку пересечения кривой curve и вертикальной прямой, пересекающей ось абсцисс в точке t·step / 2π. Ордината двумерной точки пересечения curve и вертикальной прямой равна искомому радиусу спирали radius(t). Локальный радиус равен расстоянию от локальной оси абсцисс до точки пересечения вертикальной прямой с кривой curve в двумерном пространстве плоскости XZ локальной системы координат position.

Спираль переменного радиуса приведена на рисунке:

../../../../_images/O.4.15.1.png

Кривая curve должна располагаться выше оси абсцисс и не должна пересекать ось абсцисс своей двумерной системы координат. Кривая curve не должна иметь вертикальных касательных. Для граничных параметров должно выполняться неравенство tmin < tmax. Кривая не может быть периодической.

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