Спираль с криволинейной плоской осью MbCrookedSpiral

Класс MbCrookedSpiral объявлен в файле cur_crooked_spiral.h.

Спираль с криволинейной плоской осью является наследником кривой MbSpiral. Спираль описывается локальной системой координат MbPlacement3D position, двумерной кривой MbCurve curve, определяющей ось спирали, радиусом спирали radius, шагом спирали step, двумя граничными параметрами спирали tmin и tmax. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой.

Двумерная кривая curve располагается в плоскости XZ локальной системы координат position и определяет ось спирали. Ось position.axisZ служит осью абсцисс, а ось position.axisX служит осью ординат двумерного пространства кривой curve. Начало двумерной системы координат кривой curve совпадает с началом локальной системы координат position. Радиус спирали постоянен. Параметры tmin и tmax являются углами и отсчитываются от вектора position.axisX к вектору position.axisY. Значения углов, кратные 2\(\pi\), соответствуют точке кривой в плоскости XZ локальной системы координат.

В методе PointOn(double & t, MbCartPoint3D & r) радиус-вектор кривой r описывается векторной функцией

\[\begin{split}\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),\end{split}\]

где point — точка двумерной кривой, которая вычисляется методом curve->PointOn(t, point), normal — нормаль двумерной кривой, которая вычисляется методом curve→Normal(t, normal).

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

../../../../_images/O.4.16.1.png

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

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