Эквидистантная кривая MbOffsetCurve3D
Класс MbOffsetCurve3D объявлен в файле cur_offset_curve3d.h.
Эквидистантная кривая описывается базовой кривой MbCurve3D basisCurve и вектором смещения MbVector3D offset. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой.
Базовая кривая basisCurve представляет собой объект MbSpine, который для кривой строит перемещающуюся по ней локальную систему координат, первая координатная ось которой направлена по касательной к кривой. Вектор смещения offset определяет смещение начальной точки базовой кривой в начальную точку эквидистантной кривой. Вектор смещения offset ортогонален касательному вектору базовой кривой в начальной точке. В движущейся локальной системе координат смещение всех точек базовой кривой в соответствующую точку эквидистантной кривой равно вектору смещения и ортогонально касательному вектору базовой кривой в текущей точке.
Вычисление радиуса-вектора точки эквидистантной кривой выполняется следующим образом. Для заданного параметра базовой кривой вычисляется точка на направляющей кривой и локальная система координат с началом в этой точке и первой координатной осью, направленной по касательной к кривой в этой точке. Далее вычисляется матрица поворота локальной системы координат при её перемещении из начальной точки базовой кривой в заданную точку. По матрице поворота трансформируется копия вектора смещения и на вычисленный вектор смещается вычисленная точка базовой кривой.
В методе PointOn( double & t, MbCartPoint3D & r) радиус-вектор кривой r описывается векторной функцией
где A(t) — матрица поворота локальной системы координат при её перемещении из начальной точки базовой кривой в заданную точку.
Эквидистантная кривая к конической спирали приведена на рисунке:
Область изменения параметра эквидистантной кривой совпадает с областью изменения параметра базовой кривой.
В качестве базовой кривой для эквидистантной кривой не должна использоваться другая эквидистантная кривая, а должна использоваться направляющая кривая последней с соответствующим пересчётом вектора смещения.