.. role:: blue :class: blue Спираль переменного радиуса MbCurveSpiral ========================================= .. _MbCurveSpiral_Variable_Radius_Spiral: .. версия ядра: Класс :blue:`MbCurveSpiral` объявлен в файле *cur_curve_spiral.h*. Спираль переменного радиуса является наследником кривой MbSpiral. Спираль описывается локальной системой координат :ref:`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 локальной системы координат. В методе :blue:`PointOn`\( double & *t*, :ref:`MbCartPoint ` & **r**) радиус-вектор кривой **r** описывается векторной функцией .. math:: \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**. Спираль переменного радиуса приведена на рисунке: .. figure:: /MODELER/CURVES/pictures/O.4.15.1.png :width: 9cm :align: center Кривая **curve** должна располагаться выше оси абсцисс и не должна пересекать ось абсцисс своей двумерной системы координат. Кривая **curve** не должна иметь вертикальных касательных. Для граничных параметров должно выполняться неравенство *tmin* < *tmax*. Кривая не может быть периодической. Локальная система координат **position** может быть как правой, так и левой.