Эквидистантная кривая MbOffsetCurve3D

Класс MbOffsetCurve3D объявлен в файле cur_offset_curve3d.h.

Эквидистантная кривая описывается базовой кривой MbCurve3D basisCurve и вектором смещения MbVector3D offset. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой.

Базовая кривая basisCurve представляет собой объект MbSpine, который для кривой строит перемещающуюся по ней локальную систему координат, первая координатная ось которой направлена по касательной к кривой. Вектор смещения offset определяет смещение начальной точки базовой кривой в начальную точку эквидистантной кривой. Вектор смещения offset ортогонален касательному вектору базовой кривой в начальной точке. В движущейся локальной системе координат смещение всех точек базовой кривой в соответствующую точку эквидистантной кривой равно вектору смещения и ортогонально касательному вектору базовой кривой в текущей точке.

Вычисление радиуса-вектора точки эквидистантной кривой выполняется следующим образом. Для заданного параметра базовой кривой вычисляется точка на направляющей кривой и локальная система координат с началом в этой точке и первой координатной осью, направленной по касательной к кривой в этой точке. Далее вычисляется матрица поворота локальной системы координат при её перемещении из начальной точки базовой кривой в заданную точку. По матрице поворота трансформируется копия вектора смещения и на вычисленный вектор смещается вычисленная точка базовой кривой.

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

\[\mathbf{r}(t) = \mathbf{basisCurve}(t) + \mathbf{offset} \cdot \mathbf{A}(t),\]

где A(t) — матрица поворота локальной системы координат при её перемещении из начальной точки базовой кривой в заданную точку.

Эквидистантная кривая к конической спирали приведена на рисунке:

../../../../_images/O.4.12.1.png

Область изменения параметра эквидистантной кривой совпадает с областью изменения параметра базовой кривой.

В качестве базовой кривой для эквидистантной кривой не должна использоваться другая эквидистантная кривая, а должна использоваться направляющая кривая последней с соответствующим пересчётом вектора смещения.