.. role:: blue :class: blue Спираль с криволинейной плоской осью MbCrookedSpiral ===================================================== .. _MbCrookedSpiral_Spiral_with_Curved_Planar_Axis: .. версия ядра: Класс :blue:`MbCrookedSpiral` объявлен в файле *cur_crooked_spiral.h*. Спираль с криволинейной плоской осью является наследником кривой MbSpiral. Спираль описывается локальной системой координат :ref:`MbPlacement3D ` **position**, двумерной кривой :blue:`MbCurve` **curve**, определяющей ось спирали, радиусом спирали *radius*, шагом спирали *step,* двумя граничными параметрами спирали *tmin* и *tmax*. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой. Двумерная кривая **curve** располагается в плоскости XZ локальной системы координат **position** и определяет ось спирали. Ось **position.axisZ** служит осью абсцисс, а ось **position.axisX** служит осью ординат двумерного пространства кривой **curve**. Начало двумерной системы координат кривой **curve** совпадает с началом локальной системы координат **position**. Радиус спирали постоянен. Параметры *tmin* и *tmax* являются углами и отсчитываются от вектора **position.axisX** к вектору **position.axisY**. Значения углов, кратные 2\ :math:`\pi`, соответствуют точке кривой в плоскости XZ локальной системы координат. В методе :blue:`PointOn`\(double & *t*, :blue:`MbCartPoint3D` & **r**) радиус-вектор кривой **r** описывается векторной функцией .. math:: \mathbf{r}(t) = \mathbf{position.origin} + \Bigl(\bigl(\mathbf{point}.y + \mathbf{radius} \cdot \cos(t) \cdot \mathbf{normal}.y\bigr) \cdot \mathbf{position.axisX}\Bigr) + \Bigl(\mathbf{radius} \cdot \sin(t) \cdot \mathbf{position.axisY}\Bigr) + \\ \Bigl(\bigl(\mathbf{point}.x + \mathbf{radius} \cdot \cos(t) \cdot \mathbf{normal}.x\bigr) \cdot \mathbf{position.axisZ}\Bigr), где **point** — точка двумерной кривой, которая вычисляется методом **curve**\-\>\ :blue:`PointOn`\(*t*, **point**), **normal** — нормаль двумерной кривой, которая вычисляется методом **curve**\→\ :blue:`Normal`\(*t*, **normal**). Спираль переменного радиуса приведена на рисунке: .. figure:: /MODELER/CURVES/pictures/O.4.16.1.png :width: 9cm :align: center Минимальный радиус кривизны кривой **curve** не должен быть меньше радиуса спирали. Для граничных параметров должны соблюдаться неравенства: *tmin* < *tmax*. Кривая не может быть периодической. Локальная система координат **position** может быть как правой, так и левой.