Двумерная проекционная кривая MbProjCurve
Класс MbProjCurve объявлен в файле cur_projection_curve.h.
Двумерная проекционная кривая описывается пространственной кривой MbCurve3D* spaceCurve, поверхностью MbSurface* surface и двумерной кривой MbCurve* curve. У кривой есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов кривой.
Двумерная проекционная кривая представляет собой проекцию пространственной кривой spaceCurve на поверхность surface, которая приближённо описывается двумерной кривой curve в области определения параметров поверхности. Области определения параметров кривых spaceCurve и curve совпадают. Двумерная кривая curve, как правило, является сплайном, контрольные точки которого получены проецированием точек пространственной кривой spaceCurve на поверхность surface. Параметризация кривой curve согласована с параметризацией пространственной кривой в контрольных точках. Двумерная кривая curve может располагаться за пределами области определения параметров поверхности.
В методе
PointOn( double & t, MbCartPoint & r)
радиус-вектор кривой r описывается векторной функцией
где u, v — параметры проекции точки spaceCurve(t) на поверхность surface.
Метод PointOn() корректирует параметр t, если он выходит за пределы области определения кривой. Для вычисления точки без коррекции параметра используется метод _PointOn().
Начальное приближение параметров u и v вычисляется методом
curve->PointOn(t, point),
u = point.x, v = point.y.
Далее параметры u и v уточняются итерационным методом, использующим уравнения
где deriveU и deriveV — частные производные радиуса-вектора поверхности, которые вычисляются методами
surface->_DeriveU(u, v, deriveU)
и
surface->_DeriveV(u, v, deriveV),
соответственно.
Проекционная кривая приведена на рисунке:
Проекционная кривая используется для точного описания проекции пространственной кривой на поверхность.