C3D Toolkit
Kernel - 117936, Vision - 2.7.0.41
|
Кубический сплайн в двумерном пространстве. Подробнее...
#include <cur_cubic_spline.h>
Открытые члены | |
virtual | ~MbCubicSpline () |
Деструктор. | |
Функции инициализации сплайна. | |
bool | Init (const MbCurve &, VERSION version) |
Инициализатор по заданной кривой. | |
bool | Init (const SArray< MbCartPoint > &, bool) |
Инициализатор по точкам и признаку замкнутости. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< MbVector > &, bool) |
Инициализатор по точкам, вторым производным и признаку замкнутости. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< double > &, bool) |
Инициализатор по точкам, параметрам и признаку замкнутости. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< MbVector > &, const SArray< double > &, bool) |
Инициализатор по точкам, вторым производным, параметрам и признаку замкнутости. | |
void | InitC (const MbCubicSpline &) |
Дублирующий инициализатор. | |
Общие функции геометрического объекта. | |
MbePlaneType | IsA () const override |
Получить тип объекта. | |
bool | SetEqual (const MbPlaneItem &) override |
Сделать объекты равным. Подробнее... | |
bool | IsSame (const MbPlaneItem &, double accuracy=LENGTH_EPSILON) const override |
Определить, являются ли объекты равными. Подробнее... | |
void | Transform (const MbMatrix &, MbRegTransform *ireg=nullptr, const MbSurface *newSurface=nullptr) override |
Преобразовать согласно матрице. Подробнее... | |
void | Move (const MbVector &, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Сдвинуть вдоль вектора. Подробнее... | |
void | Rotate (const MbCartPoint &, const MbDirection &, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Повернуть вокруг точки. Подробнее... | |
MbPlaneItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Создать копию. Подробнее... | |
Функции описания области определения кривой. | |
double | GetTMin () const override |
Получить минимальное значение параметра. | |
double | GetTMax () const override |
Получить максимальное значение параметра. | |
Функции для работы в области определения кривой. | |
Функции PointOn, FirstDer, SecondDer, ThirdDer,... корректируют параметр при выходе его за пределы области определения. Исключение составляет MbLine (прямая). | |
void | PointOn (double &, MbCartPoint &) const override |
Вычислить точку на кривой. Подробнее... | |
void | FirstDer (double &, MbVector &) const override |
Вычислить первую производную. | |
void | SecondDer (double &, MbVector &) const override |
Вычислить вторую производную. | |
void | ThirdDer (double &, MbVector &) const override |
Вычислить третью производную. | |
Функции доступа к группе данных для работы внутри и вне области определения параметра кривой. | |
void | Explore (double &t, bool ext, MbCartPoint &pnt, MbVector &fir, MbVector *sec, MbVector *thir) const override |
Вычислить значения точки и производных для заданного параметра. Подробнее... | |
void | FourDer (double &, MbVector &) const |
Оценить четвертую производную. | |
void | PointOnLine (double &, MbCartPoint &) const |
Вычислить точку на кривой при линейной аппроксимации. | |
Функции движения по кривой | |
double | Step (double t, double sag) const override |
Вычислить шаг параметра. Подробнее... | |
double | DeviationStep (double t, double angle) const override |
Вычислить шаг параметра. Подробнее... | |
Общие функции кривой | |
void | Rebuild () override |
Перестроить кривую. | |
void | SetClosed (bool cls) override |
Установить признак замкнутости. | |
void | Inverse (MbRegTransform *iReg=nullptr) override |
Изменить направления кривой на противоположное. | |
MbCurve * | Trimmed (double t1, double t2, int sense) const override |
Построить усеченную кривую. Подробнее... | |
MbCurve * | TrimmedBreak (double t1, double t2, int sense) const |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo &) const override |
Построить NURBS копию кривой. Подробнее... | |
MbCurve * | NurbsCurve (const MbNurbsParameters &) const override |
Построить NURBS копию кривой. Подробнее... | |
MbeState | DeletePart (double, double, MbCurve *&) override |
Удалить часть кривой. Подробнее... | |
MbeState | TrimmPart (double, double, MbCurve *&) override |
Оставить часть кривой. Подробнее... | |
bool | IsDegenerate (double eps=Math::LengthEps) const override |
Определить, является ли кривая вырожденной. | |
void | GetProperties (MbProperties &properties) override |
Выдать свойства объекта. Подробнее... | |
void | SetProperties (const MbProperties &properties) override |
Изменить свойства объекта. Подробнее... | |
double | CalculateMetricLength () const override |
Вычислить метрическую длину кривой. | |
bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::LengthEps, VERSION version=Math::DefaultMathVersion()) const override |
Сдвинуть параметр вдоль кривой. Подробнее... | |
void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) const override |
Получить границы участков кривой, которые описываются одной аналитической функцией. | |
Общие функции полигональной кривой | |
void | InsertPoint (ptrdiff_t index, const MbCartPoint &) override |
Вставить точку в массив контрольных точек. Подробнее... | |
void | InsertPoint (double t, const MbCartPoint &, double xEps, double yEps) override |
Вставить точку в массив контрольных точек. Подробнее... | |
void | ChangePoint (ptrdiff_t index, const MbCartPoint &) override |
Заменить точку. Подробнее... | |
void | RemovePoints () override |
Удалить все точки. | |
void | GetRuleInterval (ptrdiff_t index, double &t1, double &t2) const override |
Вернуть интервал влияния точки кривой. Подробнее... | |
double | PointProjection (const MbCartPoint &to) const override |
Найти проекцию точки на кривую. | |
void | IntersectHorizontal (double y, SArray< double > &) const override |
Найти пересечения кривой с горизонтальной прямой. Подробнее... | |
void | IntersectVertical (double x, SArray< double > &) const override |
Найти пересечения кривой с вертикальной прямой. Подробнее... | |
bool | CheckParam (double &t, ptrdiff_t &i0, ptrdiff_t &i1, double &t0, double &t1) const override |
Переместить параметр в область определения кривой. Подробнее... | |
double | GetParam (ptrdiff_t i) const override |
Вернуть параметр, соответствующий точке с указанным индексом. | |
size_t | GetParamsCount () const override |
Выдать количество параметров. | |
virtual MbCurve * | CicleCopy (double t1, double t2) const |
Создание копии кривой. Подробнее... | |
void | InitCreate (MbVector &, MbVector &, SArray< MbVector > &, double &, double &, double &, double &, bool black=false) |
Подготовить вычисление сплайна. Подробнее... | |
void | Create (MbVector &, MbVector &, bool black=false) |
Решить систему методом исключения Гаусса. | |
void | CreateEndS (MbVector &, MbVector &) |
Вычислить производные на концах в случае незамкнутости сплайна. | |
void | Create () |
Построить сплайн если необходимо. | |
void | Delete () |
Очистить кривую. | |
bool | SetLimitParam (double newTMin, double newTMax) |
Установить область изменения параметра: первый - минимальный, второй - максимальный. | |
bool | ConvertToClosed () |
Преобразовать в замкнутую кривую, если кривая разомкнута но концы кривой гладко стыкуются. | |
void | SetBegEndDerivesEqual () override |
Установить равные производные на краях. | |
void | ClosedBreak () override |
Сделать незамкнутой, оставив совпадающими начало и конец. | |
double | StepD (double &t, double sag, bool bfirst, double ang=0.35) const |
Вычисление шага аппроксимации. | |
ptrdiff_t | GetVectorListCount () const |
Вернуть количество элементов в массиве векторов производных. | |
void | GetVectorList (SArray< MbVector > &vectors) const |
Вернуть массив вторых призводных в контрольных точках. | |
const MbVector & | GetVectorList (size_t i) const |
Выдать вектор второй производной с индексов i. | |
MbVector & | SetVectorList (size_t i) |
Выдать вектор второй производной с индексов i. | |
ptrdiff_t | GetTListCount () const |
Вернуть количество параметров в узлах. | |
void | GetTList (SArray< double > ¶ms) const override |
Вернуть массив параметров в узлах. | |
const double & | GetTList (size_t i) const |
Вернуть значение параметра для точки с индексом i. | |
ptrdiff_t | GetUppParam () const |
Вернуть число сегментов сплайна. | |
ptrdiff_t | GetIndex (double t) const |
Определение максимального индекса массива параметров слева. | |
![]() | |
virtual | ~MbPolyCurve () |
Деструктор. | |
MbePlaneType | Type () const override |
Получить групповой тип объекта. | |
void | AddYourGabaritTo (MbRect &r) const override |
Расширить присланный габаритный прямоугольник так, чтобы он включал в себя данный объект. | |
void | Refresh () override |
Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние. | |
void | PrepareIntegralData (const bool forced) const override |
Рассчитать временные (mutable) данные объекта. Подробнее... | |
bool | IsClosed () const override |
Определить, является ли кривая замкнутой. Подробнее... | |
bool | IsStraight (bool ignoreParams=false) const override |
Определить, является ли кривая прямолинейной. | |
bool | HasLength (double &length) const override |
Вычислить метрическую длину кривой. Подробнее... | |
MbeState | Deformation (const MbRect &, const MbMatrix &) override |
Деформировать кривую. Подробнее... | |
bool | IsInRectForDeform (const MbRect &r) const override |
Определить видимость кривой в прямоугольнике. | |
size_t | GetCount () const override |
Определить количество разбиений для прохода в операциях. | |
double | GetMetricLength () const override |
Вычислить метрическую длину кривой. Подробнее... | |
double | GetLengthEvaluation () const override |
Вычислить метрическую длину кривой. Подробнее... | |
bool | GetSpecificPoint (const MbCartPoint &from, double &dmax, MbCartPoint &pnt) const override |
Вернуть характерную точку кривой. Подробнее... | |
void | GetBasisPoints (MbControlData &) const override |
Выдать контрольные точки объекта. | |
void | SetBasisPoints (const MbControlData &) override |
Изменить объект по контрольным точкам. | |
virtual size_t | GetPointsCount () const |
Выдать количество контрольных точек. | |
virtual void | GetPoint (ptrdiff_t index, MbCartPoint &pnt) const |
Выдать характерную точку. Подробнее... | |
virtual ptrdiff_t | GetNearPointIndex (const MbCartPoint &pnt) const |
Выдать индекс точки, ближайшей к заданной. | |
virtual void | RemovePoint (ptrdiff_t index) |
Удалить характерную точку с заданным индексом. | |
virtual void | AddPoint (const MbCartPoint &pnt) |
Добавить точку в конец массива контрольных точек. | |
virtual bool | ChangePointsValue (const SArray< MbCartPoint > &pntList) |
Изменить характерные точки. Подробнее... | |
virtual void | AddAfter (const MbCartPoint &pnt, ptrdiff_t index) |
Вставить точку в массив контрольных точек. Подробнее... | |
virtual void | InsertPoint (double t, const MbCartPoint &pnt, const MbVector &v, double xEps, double yEps) |
Вставить точку в массив контрольных точек. Подробнее... | |
virtual void | ChangePole (ptrdiff_t index, const MbCartPoint &pnt) |
Заменить полюс. Подробнее... | |
size_t | GetPointListCount () const |
Выдать количество характерный точек. | |
ptrdiff_t | GetPointListMaxIndex () const |
Выдать максимальный индекс массива контрольных точек. | |
template<class PointsVector > | |
void | GetPoints (PointsVector &pnts) const |
Вернуть массив контрольных точек. | |
void | GetPointList (SArray< MbCartPoint > &pnts) const |
Вернуть массив контрольных точек. | |
void | GetPointList (c3d::ParamPointsVector &pnts) const |
Вернуть массив контрольных точек. | |
bool | ReplacePoints (const SArray< MbCartPoint > &pnts) |
Заменить набор контрольных точек. | |
bool | ReplacePoints (const std::vector< MbCartPoint > &pnts) |
Заменить набор контрольных точек. | |
const MbCartPoint & | GetPointList (size_t i) const |
Вернуть характерную точку с заданным индексом. | |
MbCartPoint & | SetPointList (size_t i) |
Вернуть характерную точку с заданным индексом. | |
ptrdiff_t | GetUppIndex () const |
Вернуть максимальный индекс массива контрольных точек. | |
size_t | GetSegmentsCount () const |
Вернуть количество интервалов. | |
template<class SegmentsVector > | |
void | GetLineSegments (SegmentsVector &segments, double eps=PARAM_PRECISION) const |
Выдать массив отрезков. | |
bool | NurbsParam (double epsilon, double &pmin, double &pmax, ptrdiff_t &i1, double &t1, ptrdiff_t &i2, double &t2) const |
Дать информацию для функции NurbsCurve. Подробнее... | |
![]() | |
virtual | ~MbCurve () |
Деструктор. | |
MbePlaneType | Type () const override |
Получить групповой тип объекта. | |
MbePlaneType | Family () const override |
Получить семейство объекта. | |
void | Refresh () override |
Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние. | |
size_t | size () const |
Количество объектов при трактовке объекта как вектора объектов. | |
const MbCurve * | operator[] (size_t) const |
Оператор доступа. | |
virtual MbResultType | Extend (const MbCurveExtensionParameters ¶meters, c3d::PlaneCurveSPtr &resCurve) const |
Продлить кривую. Подробнее... | |
virtual void | AddYourGabaritMtr (MbRect &rect, const MbMatrix &matr) const |
Добавить габарит в прямоугольник. Подробнее... | |
virtual void | CalculateGabarit (MbRect &) const |
Определить габаритный прямоугольник кривой. Подробнее... | |
virtual void | CalculateLocalGabarit (const MbMatrix &into, MbRect &local) const |
Рассчитать габарит в локальной системы координат. Подробнее... | |
bool | IsVisibleInRect (const MbRect &rect, bool exact=false) const override |
Определить видимость объекта в прямоугольнике. Подробнее... | |
virtual bool | IsCompleteInRect (const MbRect &rect) const |
Определить, виден ли объект полностью в прямоугольнике. Подробнее... | |
double | DistanceToPoint (const MbCartPoint &toP) const override |
Вычислить расстояние до точки. | |
bool | DistanceToPointIfLess (const MbCartPoint &toP, double &d) const override |
Вычислить расстояние до точки. Подробнее... | |
virtual double | GetPeriod () const |
Вернуть период. Подробнее... | |
virtual bool | IsPeriodic () const |
Определить, является ли замкнутая кривая периодической. | |
bool | IsTouch (double eps=Math::LengthEps) const |
Определить, замкнута ли кривая фактически независимо от гладкости замыкания. Подробнее... | |
void | Tangent (double &t, MbVector &v) const |
Вычислить касательный вектор (нормализованный). | |
void | Tangent (double &t, MbDirection &d) const |
Вычислить касательный вектор (нормализованный). | |
void | Normal (double &t, MbVector &v) const |
Вычислить вектор главной нормали (нормализованный). | |
void | Normal (double &t, MbDirection &d) const |
Вычислить вектор главной нормали (нормализованный). | |
virtual void | _PointOn (double t, MbCartPoint &p) const |
Вычислить точку на кривой и её продолжении. Подробнее... | |
virtual void | _FirstDer (double t, MbVector &v) const |
Вычислить первую производную на кривой и её продолжении. | |
virtual void | _SecondDer (double t, MbVector &v) const |
Вычислить вторую производную на кривой и её продолжении. | |
virtual void | _ThirdDer (double t, MbVector &v) const |
Вычислить третью производную на кривой и её продолжении. | |
void | _Tangent (double t, MbVector &v) const |
Вычислить касательный вектор (нормализованный). | |
void | _Tangent (double t, MbDirection &d) const |
Вычислить касательный вектор (нормализованный). | |
void | _Normal (double t, MbVector &v) const |
Вычислить вектор главной нормали (нормализованный) на кривой и её продолжении. | |
void | _Normal (double t, MbDirection &d) const |
Вычислить вектор главной нормали (нормализованный) на кривой и её продолжении. | |
virtual double | Curvature (double t) const |
Вычислить кривизну кривой. | |
double | CurvatureDerive (double t) const |
Вычислить производную кривизны по параметру. | |
double | CurvatureRadius (double t) const |
Вычислить радиус кривизны кривой со знаком. | |
virtual bool | IsBounded () const |
Определить, является ли кривая ограниченной. | |
virtual bool | IsSmoothConnected (double angleEps) const |
Определить, являются ли стыки контура/кривой гладкими. | |
double | GetParamLength () const |
Вычислить параметрическую длину кривой. | |
virtual double | CalculateLength (double t1, double t2) const |
Вычислить метрическую длину кривой. Подробнее... | |
virtual void | ResetTCalc () const |
Сбросить текущее значение параметра. | |
virtual MbCurve * | Offset (double rad) const |
Построить эквидистантную кривую, смещённую на заданное расстояние. | |
virtual bool | BeginApprox (double sag, double &tbeg, double &tend, MbCartPoint &pnt, bool &existNextPoint) const |
Начать аппроксимацию для отрисовки. Подробнее... | |
virtual bool | GetNextPoint (double sag, double tend, double &tcur, MbCartPoint &pnt) const |
Вычислить очередную точку. Подробнее... | |
virtual void | CalculatePolygon (double sag, MbPolygon &poligon) const |
Рассчитать массив точек для отрисовки. Подробнее... | |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo *nInfo=nullptr) const |
Построить NURBS копию кривой. Подробнее... | |
virtual MbContour * | NurbsContour () const |
Аппроксимировать кривую контуром из NURBS-кривых. | |
virtual MbeItemLocation | PointRelative (const MbCartPoint &pnt, double eps=Math::LengthEps) const |
Определить положение точки относительно кривой. Подробнее... | |
virtual MbeLocation | PointLocation (const MbCartPoint &pnt, double eps=Math::LengthEps) const |
Положение точки относительно кривой. | |
MbeNewtonResult | PointProjectionNewton (const MbCartPoint &p, double xEpsilon, double yEpsilon, size_t iterLimit, double &t, bool ext) const |
Найти проекцию точки на кривую. Подробнее... | |
virtual bool | NearPointProjection (const MbCartPoint &pnt, double xEpsilon, double yEpsilon, double &t, bool ext, MbRect1D *tRange=nullptr) const |
Найти проекцию точки на кривую. Подробнее... | |
void | PointProjection (const MbCartPoint &pnt, MbCartPoint &on) const |
Вычислить проекцию точки на кривую. Подробнее... | |
void | BasePointProjection (const MbCartPoint &pnt, MbCartPoint &on) const |
Вычислить проекцию точки на кривую. Подробнее... | |
void | PointProjectionAndAngle (MbCartPoint &on, double &angle) const |
Вычислить проекцию точки на кривую. Подробнее... | |
bool | DirectPointProjection (const MbCartPoint &pnt, const MbDirection &dir, MbCartPoint &pp) const |
Вычислить проекцию точки на кривую. Подробнее... | |
virtual bool | SmallestPerpendicular (const MbCartPoint &pnt, double &tProj) const |
Найти ближайший перпендикуляр к кривой. Подробнее... | |
virtual void | TangentPoint (const MbCartPoint &pnt, SArray< double > &tFind) const |
Найти касательные к кривой. Подробнее... | |
virtual void | PerpendicularPoint (const MbCartPoint &pnt, SArray< double > &tFind) const |
Найти перпендикуляры к кривой. Подробнее... | |
virtual void | Isoclinal (const MbVector &angle, SArray< double > &tFind) const |
Построить изоклины. Подробнее... | |
void | HorzIsoclinal (SArray< double > &tFind) const |
Построить горизонтальные изоклины. Подробнее... | |
void | VertIsoclinal (SArray< double > &tFind) const |
Построить вертикальные изоклины. Подробнее... | |
void | LowestPoint (MbCartPoint &lowestPoint, double &tLowest) const |
Найти нижнюю точку кривой и соответствующий ей параметр. | |
virtual void | SelfIntersect (SArray< MbCrossPoint > &, double metricEps=Math::LengthEps) const |
Найти самопересечения кривой. Подробнее... | |
virtual void | OffsetCuspPoint (SArray< double > &tCusps, double dist) const |
Найти особые точки эквидистантной кривой. Подробнее... | |
virtual bool | GoThroughPoint (MbCartPoint &pnt) |
Провести кривую через точку. Подробнее... | |
virtual bool | GetMiddlePoint (MbCartPoint &) const |
Вычислить среднюю точку кривой. | |
virtual void | GetStartPoint (MbCartPoint &) const |
Вычислить начальную точку кривой. | |
virtual void | GetEndPoint (MbCartPoint &) const |
Вычислить конечную точку кривой. | |
virtual bool | GetCentre (MbCartPoint &) const |
Вычислить центр кривой. | |
virtual double | GetRadius () const |
Дать физический радиус скривой или ноль, если это невозможно. Подробнее... | |
virtual bool | GetAxisPoint (MbCartPoint &p) const |
Вычислить точку для построения оси. Подробнее... | |
virtual bool | IsSimilarToCurve (const MbCurve &curve, double precision=PARAM_PRECISION) const |
Определить, подобны ли кривые для объединения (слива). | |
void | GetPointsByEvenParamDelta (size_t n, std::vector< MbCartPoint > &pnts) const |
Выдать n точек кривой с равными интервалами по параметру. | |
void | GetPointsByEvenParamDelta (size_t n, SArray< MbCartPoint > &pnts) const |
virtual void | GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint > &pnts) const |
Выдать n точек кривой с равными интервалами по длине дуги. | |
void | GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint > &pnts) const |
virtual double | LengthBetween2Points (MbCartPoint &p1, MbCartPoint &p2, MbCartPoint *pc=nullptr) const |
Вычислить минимальную длину кривой между двумя точками на ней. Подробнее... | |
virtual bool | GetWeightCentre (MbCartPoint &) const |
Вычислить центр тяжести кривой. | |
bool | IsPointOn (const MbCartPoint &, double eps=Math::LengthEps) const |
Проверить лежит ли точка на кривой с точностью eps. | |
bool | IsParamOn (double t, double eps=Math::paramEpsilon) const |
Проверить лежит ли параметр в диапазоне кривой с точностью eps. | |
void | CorrectCyclicParameter (double &t, double eps=Math::paramRegion) const |
Корректировать параметр для замкнутых кривых. Подробнее... | |
void | CorrectParameter (double &t) const |
Корректировать параметр. Подробнее... | |
MbCurve * | InverseDuplicate () const |
Сделать копию с измененным направлением. | |
bool | IsInverseSame (const MbCurve &curve, double accuracy=LENGTH_EPSILON) const |
Определить, являются ли кривая инверсно такой же. | |
virtual bool | IsReparamSame (const MbCurve &curve, double &factor) const |
Определить, является ли кривая репараметризованно такой же. Подробнее... | |
MbCartPoint | GetLimitPoint (ptrdiff_t number) const |
Вычислить граничную точку. Подробнее... | |
void | GetLimitPoint (ptrdiff_t number, MbCartPoint &pnt) const |
Вычислить граничную точку. Подробнее... | |
void | GetLimitTangent (ptrdiff_t number, MbVector &v) const |
Вычислить касательный вектор в граничной точке. Подробнее... | |
void | GetLimitPointAndTangent (ptrdiff_t number, MbCartPoint &pnt, MbVector &v) const |
Вычислить касательный вектор и точку на конце кривой. Подробнее... | |
bool | AreLimitPointsEqual () const |
Равны ли граничные точки? Подробнее... | |
virtual const MbCurve & | GetBasisCurve () const |
Вернуть базовую кривую, если есть, или себя. | |
virtual MbCurve & | SetBasisCurve () |
Вернуть базовую кривую, если есть, или себя. | |
virtual double | GetParamDelta () const |
Вернуть отступ по параметру кривой. | |
virtual const MbCurve & | GetSubstrate () const |
Выдать подложку или себя. | |
virtual MbCurve & | SetSubstrate () |
Выдать подложку или себя. | |
virtual int | SubstrateCurveDirection () const |
Вернуть направление подложки относительно кривой или наоборот. | |
virtual void | SubstrateToCurve (double &) const |
Преобразовать параметр подложки в параметр кривой. | |
virtual void | CurveToSubstrate (double &) const |
Преобразовать параметр кривой в параметр подложки. | |
virtual double | GetParamToUnit () const |
Вернуть приращение параметра, соответствующее единичной длине в пространстве. | |
virtual double | GetParamToUnit (double t) const |
Вернуть приращение параметра, соответствующее единичной длине в пространстве в зависимости от параметра. | |
virtual double | GetTEpsilon (double epsilon) const |
Вернуть минимально различимую величину параметра с заданной точностью. | |
virtual double | GetTEpsilon (double t, double epsilon) const |
Вернуть минимально различимую величину параметра с заданной точностью в зависимости от параметра. | |
virtual double | GetTRegion (double epsilon) const |
Вернуть минимально различимую величину параметра с заданной точностью. | |
virtual double | GetTRegion (double t, double epsilon) const |
Вернуть минимально различимую величину параметра с заданной точностью в зависимости от параметра. | |
double | GetTMid () const |
Вернуть середину параметрического диапазона кривой. | |
double | GetTRange () const |
Вернуть параметрическую длину кривой. | |
MbCartPoint | PointOn (double &t) const |
Вычислить точку на кривой. | |
MbVector | FirstDer (double &t) const |
Вычислить первую производную. | |
MbDirection | Tangent (double &t) const |
Вычислить касательный вектор (нормализованный). | |
MbDirection | Normal (double &t) const |
Вычислить нормальный вектор. | |
double | DerLength (double &t) const |
Вычислить длину вектора производной. | |
virtual void | BreakPoints (std::vector< double > &vBreaks, double precision=ANGLE_REGION) const |
\ ru Определение точек излома кривой. | |
MbProperty & | CreateProperty (MbePrompt name) const override |
Создать собственное свойство. | |
virtual bool | IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const |
Выдать свойства объекта. Подробнее... | |
virtual bool | SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) |
Устранить разрывы первых производных по длине. Устранить разрывы производных по длине. . Подробнее... | |
bool | IsSpaceNear (const MbCurve &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const |
Определить, близки ли две кривые метрически. Подробнее... | |
bool | IsSpaceNear (const MbCurve &curve, double xEps, double yEps, bool ext, double xNear, double yNear, double devSag=5.0 *Math::deviateSag) const |
Определить, близки ли две кривые метрически. Подробнее... | |
SimpleName | GetCurveName () const |
Имя кривой. | |
void | SetCurveName (SimpleName newName) |
Установить имя кривой. | |
![]() | |
virtual | ~MbPlaneItem () |
Деструктор. | |
void | PrepareWrite () const |
Регистрация объекта. Подробнее... | |
MbeRefType | RefType () const override |
Получить регистрационный тип (для копирования, дублирования). | |
virtual void | Rotate (const MbCartPoint &pnt, double angle, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr) |
Повернуть вокруг точки. Подробнее... | |
virtual bool | IsSimilar (const MbPlaneItem &item) const |
Определить, являются ли объекты подобными. Подробнее... | |
![]() | |
TapeBase (RegistrableRec regs=noRegistrable) | |
Конструктор. | |
TapeBase (const TapeBase &) | |
Конструктор копирования | |
virtual | ~TapeBase () |
Деструктор. | |
RegistrableRec | GetRegistrable () const |
Является ли потоковый класс регистрируемым. | |
void | SetRegistrable (RegistrableRec regs=registrable) const |
Установить состояние регистрации потокового класса. | |
virtual ClassDescriptor | GetClassDescriptor (const VersionContainer &) const =0 |
Получить дескриптор класса | |
virtual const char * | GetPureName (const VersionContainer &) const |
Получить имя класса. | |
virtual bool | IsFamilyRegistrable () const |
Принадлежит ли объект к регистрируемому семейству. | |
![]() | |
refcount_t | GetUseCount () const |
Выдать количество ссылок (выдать количество владельцев объекта). | |
refcount_t | AddRef () const |
Увеличить количество ссылок на единицу. | |
refcount_t | DecRef () const |
Уменьшить количество ссылок на единицу. | |
refcount_t | Release () const |
Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя. | |
![]() | |
void | Lock () const |
Включить блокировку (блокировка происходит только при наличии параллельности). | |
void | Unlock () const |
Снять блокировку, если она была установлена. | |
CommonRecursiveMutex * | GetLock () const |
Выдать указатель на объект мьютекса. Возращает nullptr, если параллельности нет. Для использования в ScopedLock. | |
Открытые статические члены | |
static MbCubicSpline * | Create (const MbCubicSpline &other) |
Создать копию сплайна. Подробнее... | |
static MbCubicSpline * | Create (const MbCurve &curve, VERSION version) |
Создать сплайн gj rhb. Подробнее... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, bool cls) |
Создать сплайн. Подробнее... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, bool cls) |
Создать сплайн. Подробнее... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< double > ¶ms, bool cls) |
Создать сплайн. Подробнее... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, const SArray< double > ¶ms, bool cls) |
Создать сплайн. Подробнее... | |
Защищенные члены | |
MbCubicSpline () | |
Конструктор по умолчанию. | |
MbCubicSpline (const MbCubicSpline &other) | |
Дублирующий конструктор. Конструктор по заданной кривой. | |
MbCubicSpline (const SArray< MbCartPoint > &points, bool cls) | |
Конструктор. Подробнее... | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, bool cls) | |
Конструктор по точкам, вторым производным и признаку замкнутости. | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< double > ¶ms, bool cls) | |
Конструктор по точкам, параметрам и признаку замкнутости. | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, const SArray< double > ¶ms, bool cls) | |
Конструктор по точкам, вторым производным, параметрам и признаку замкнутости. | |
![]() | |
MbPolyCurve () | |
Конструктор по умолчанию. | |
MbPolyCurve (const MbPolyCurve &pCurve) | |
Конструктор копирования. | |
virtual bool | CanChangeClosed () const |
Определить, можно ли поменять признак замкнутости. | |
![]() | |
MbCurve () | |
Конструктор по умолчанию. | |
MbCurve (const MbCurve &other) | |
Конструктор копирования. | |
![]() | |
MbPlaneItem () | |
Конструктор. | |
![]() | |
MbRefItem () | |
Конструктор без параметров. | |
Защищенные данные | |
SArray< MbVector > | vectorList |
Множество вторых производных в контрольных точках. | |
SArray< double > | tList |
Множество параметров в контрольных точках. | |
ptrdiff_t | splinesCount |
Максимальное значение индекса в множестве параметров tList. | |
![]() | |
SArray< MbCartPoint > | pointList |
Множество контрольных точек. | |
ptrdiff_t | uppIndex |
Количество участков кривой (равно количество контрольных точек минус единица). | |
bool | closed |
Признак замкнутости кривой. | |
MbRect | rect |
Габаритный прямоугольник. | |
double | metricLength |
Метрическая длина сплайна. | |
![]() | |
SimpleName | name |
Имя кривой. Данные объекта являются временными и используются для внутренних целей. | |
Кубический сплайн в двумерном пространстве.
Кубический сплайн определяется контрольными точками pointList и значениями параметра сплайна tList в контрольных точках. По контрольным точкам сплайна и значениям параметра в контрольных точках рассчитываются вторые производные сплайна vectorList в контрольных точках. Для не замкнутой кривой множества pointList, vectorList и tList должны содержать одинаковое количество элементов. Для замкнутой кривой количество элементов tList должно быть на единицу больше, чем количество элементов pointList и vectorList. Кубический сплайн проходит через свои контрольные точки при значениях параметра из множества tList. На каждом участке между двумя соседними контрольными точками сплайн описывается кубическим полиномом. Кубические полиномы гладко стыкуются в контрольных точках и имеют в них непрерывные вторые производные. Вторые производные между двумя соседними контрольными точками сплайна изменяются по линейному закону.
|
protected |
Конструктор.
Конструктор по точкам и признаку замкнутости.
[in] | points | - Набор узловых точек. В случае незамкнутой кривой количество точек должно быть не меньше двух, в случае замкнутой кривой - не меньше трех. Если количество точек не соответствует требованиям - поведение кривой неопределено. |
[in] | cls | - Признак замкнутости кривой. |
|
static |
Создать копию сплайна.
Создать копию сплайна.
|
static |
Создать сплайн gj rhb.
Создать сплайн по заданной кривой и установить параметры сплайна.
[in] | curve | - Заданная кривая. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | points | - Набор контрольных точек. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | points | - Набор контрольных точек. |
[in] | seconds | - Набор вторых производных в контрольных точках. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | points | - Набор контрольных точек. |
[in] | params | - Набор параметров в контрольных точках. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | points | - Набор контрольных точек. |
[in] | seconds | - Набор вторых производных в контрольных точках. |
[in] | params | - Набор параметров в контрольных точках. |
[in] | cls | - Признак замкнутости. |
|
overridevirtual |
Сделать объекты равным.
Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.
[in] | item | - Объект для инициализации. |
Замещает MbPlaneItem.
|
overridevirtual |
Определить, являются ли объекты равными.
Равными считаются однотипные объекты, все данные которых одинаковы (равны).
[in] | item | - Объект для сравнения. |
[in] | accuracy | - Точность сравнения. |
Замещает MbPlaneItem.
|
overridevirtual |
Преобразовать согласно матрице.
Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.
[in] | matr | - Матрица преобразования. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
overridevirtual |
Сдвинуть вдоль вектора.
Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.
[in] | to | - Вектор сдвига. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
overridevirtual |
Повернуть вокруг точки.
Повернуть объект вокруг точки на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.
[in] | pnt | - Неподвижная точка. |
[in] | angle | - Угол поворота. |
[in] | iReg | - Регистратор. |
[in] | surface | - Новая базовая поверхность объекта при условии, что matr - матрица преобразования из старой поверхности в новую. Для трансформации проекционной кривой. Не учитывается, если поверхность плоская. |
Замещает MbPlaneItem.
|
overridevirtual |
Создать копию.
Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.
[in] | iReg | - Регистратор. |
Замещает MbPlaneItem.
|
overridevirtual |
Вычислить точку на кривой.
Скорректировать параметры при выходе их за пределы области определения и вычислить точку на кривой.
[in] | t | - Параметр curve. |
[out] | p | - Вычисленная точка на кривой. |
Замещает MbCurve.
|
overridevirtual |
Вычислить значения точки и производных для заданного параметра.
Значения точки и производных вычисляются в пределах области определения и на расширенной кривой.
[in] | t | - Параметр. |
[in] | ext | - В пределах области определения (false), на расширенной кривой (true). |
[out] | pnt | - Точка. |
[out] | fir | - Производная. |
[out] | sec | - Вторая производная по t, если не ноль. |
[out] | thir | - Третья производная по t, если не ноль. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Вычислить шаг параметра.
Вычислить шаг параметра для аппроксимации кривой по величине прогиба кривой. Вычисление шага проходит с учетом радиуса кривизны. Шаг аппроксимации кривой выбирается таким образом, чтобы отклонение кривой от её полигона не превышало заданную величину прогиба.
[in] | t | - Параметр, определяющий точку на кривой, в которой надо вычислить шаг. |
[in] | sag | - Максимально допустимая величина прогиба. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Вычислить шаг параметра.
Вычислить шаг параметра для аппроксимации кривой по углу отклонения касательной. Шаг аппроксимации кривой выбирается таким образом, чтобы угловое отклонение касательной кривой в следующей точке не превышало заданную величину ang.
[in] | t | - Параметр, определяющий точку на кривой, в которой надо вычислить шаг. |
[in] | ang | - Максимально допустимый угол отклонения касательной. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Построить усеченную кривую.
Строит усеченную кривую, начало которой соответствует точке с параметром t1 и конец - точке с параметром t2. Можно изменить направление полученной кривой относительно исходной с помощью параметра sense.
[in] | t1 | - Параметр, соответствующий началу усеченной кривой. |
[in] | t2 | - Параметр, соответствующий концу усеченной кривой. |
[in] | sense | - Направление усеченной кривой относительно исходной. sense = 1 - направление кривой сохраняется. sense = -1 - направление кривой меняется на обратное. |
Замещает MbCurve.
|
overridevirtual |
Построить NURBS копию кривой.
Строит NURBS кривую, аппроксимирующую заданную в диапазоне параметров [t1, t2] с заданным направлением. По возможности, строит точную кривую, возможно с кратными узлами. Количество узлов для NURBS определяется в зависимости от кривой.
[in,out] | nurbs | - Построенная NURBS кривая. |
[in] | t1 | - Параметр, соответствующий началу аппроксимируемой части кривой. |
[in] | t2 | - Параметр, соответствующий концу аппроксимируемой части кривой. |
[in] | sense | - Совпадает ли направление возрастания параметра вдоль NURBS кривой с направлением на исходной кривой. sense > 0 - направление совпадает. |
[in] | nInfo | - Параметры преобразования кривой в NURBS. |
Замещает MbCurve.
|
overridevirtual |
Построить NURBS копию кривой.
Строит NURBS кривую, аппроксимирующую исходную с заданными параметрами. В параметрах можно задать степень и количество узлов сплайна, диапазон изменения параметра кривой. Если в параметрах не задан флаг точной аппроксимации, то строит NURBS без кратных узлов.
[in] | tParameters | - Параметры построения NURBS копии кривой. |
Переопределяет метод предка MbCurve.
Удалить часть кривой.
Удалить часть кривой между параметрами t1 и t2. Если после удаления кривая распалась на две части, то исходный объект соответствует начальной части кривой, а в параметре part2 содержится конечная часть кривой. Если осталась односвязной, то изменяется только исходный объект.
[in] | t1 | - Начальный параметр усечения. |
[in] | t2 | - Конечный параметр усечения. |
[in,out] | part2 | - Конечная часть кривой после удаления, если исходная кривая распалась на части. Может являться единственной частью кривой после удаления, \ если не смогли изменить саму кривую (например, для прямой MbLine), в этом случае возвращаемый результат dp_Degenerated. |
Замещает MbCurve.
Оставить часть кривой.
Оставить часть кривой между параметрами t1 и t2.
В случае успеха операции возвращаемое значение равно dp_Changed и кривая удовлетворяет следующим условиям:
[in] | t1 | - Начальный параметр усечения. |
[in] | t2 | - Конечный параметр усечения. |
[in,out] | part2 | - Может заполниться результатом усечения, если не смогли изменить саму кривую. В этом случае возвращаемый результат dp_Degenerated. Иначе = nullptr. |
Замещает MbCurve.
|
overridevirtual |
Выдать свойства объекта.
Выдать внутренние данные (свойства) объекта для их просмотра и модификации.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.
|
overridevirtual |
Изменить свойства объекта.
Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.
|
overridevirtual |
Сдвинуть параметр вдоль кривой.
Сдвинуть параметр вдоль кривой на заданное расстояние в заданном направлении. Новое значение параметра сохраняется в переменной t. Если кривая не замкнута и длина ее части от точки с параметром t до конца в заданном направлении меньше, чем нужное смещение, то вычисления происходят на продолжении кривой, если можно построить продолжение.
[in,out] | t | - На входе - исходное значение параметра. На выходе - новое значение параметра. |
[in] | len | - Величина смещения вдоль кривой. |
[in] | curveDir | - Направление смещения. Если curveDir - неотрицательно, то смещение направлено в сторону увеличения параметра. Иначе - в сторону уменьшения параметра. |
[in] | eps | - Точность вычислений. |
[in] | version | - Версия. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Вставить точку в массив контрольных точек.
Вставить заданную точку по индексу.
[in] | pnt | - Заданная точка. |
[in] | index | - Индекс, по которому надо вставить точку. |
Замещает MbPolyCurve.
|
overridevirtual |
Вставить точку в массив контрольных точек.
Вставить точку, которая будет соответствовать параметру t кривой. Если параметр t отличается от параметра некоторой точки меньше, чем на заданную погрешность, то новая точка не вставляется, заменяется уже существующая близкая по параметру точка.
[in] | t | - Параметр новой точки. |
[in] | pnt | - Заданная точка. |
[in] | xEps | - Точность по x. |
[in] | yEps | - Точность по y. |
Замещает MbPolyCurve.
|
overridevirtual |
Заменить точку.
Заменить точку.
[in] | index | - Индекс изменяемой точки. |
[in] | pnt | - Заданная точка. |
Переопределяет метод предка MbPolyCurve.
|
overridevirtual |
Вернуть интервал влияния точки кривой.
Определяет, на каком интервале параметра кривой скажется изменение характерной точки с индексом index.
[in] | index | - Номер характерной точки. |
[out] | t1 | - Минимальный параметр интервала влияния. |
[out] | t2 | - Максимальный параметр интервала влияния. |
Замещает MbPolyCurve.
|
overridevirtual |
Найти пересечения кривой с горизонтальной прямой.
Найти пересечения кривой с горизонтальной прямой.
[in] | y | - Ордината точек горизонтальной прямой. |
[in,out] | cross | - Массив параметров кривой, соответствующих точкам пересечения. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Найти пересечения кривой с вертикальной прямой.
Найти пересечения кривой с вертикальной прямой.
[in] | x | - Абсцисса точек вертикальной прямой. |
[in,out] | cross | - Массив параметров кривой, соответствующих точкам пересечения. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Переместить параметр в область определения кривой.
Проверить параметр. Если он выходит за диапазон изменения параметров кривой, то в случае замкнутой кривой привести его в область определения, изменяя на период. В случае незамкнутой кривой - сделать равным ближайшему граничному параметру. Определить индексы характерный точек, между которыми находится заданный параметр, и их параметрические значения.
[in,out] | t | - На входе - заданный параметр. На выходе - параметр в области определения кривой. |
[out] | i0 | - Индекс характерной точки слева от заданного параметра. |
[out] | i1 | - Индекс характерной точки справа от заданного параметра. |
[out] | t0 | - Параметр характерной точки слева от заданного параметра. |
[out] | t1 | - Параметр характерной точки справа от заданного параметра. |
Замещает MbPolyCurve.
|
virtual |
Создание копии кривой.
Создание копии кривой циклическим перебросом части кривой с началом в t1 или t2 для замкнутой пространственной кривой на поверхности.
[in] | t1 | - Крайний параметр с копируемой части кривой. |
[in] | t2 | - Крайний параметр с копируемой части кривой. |
void MbCubicSpline::InitCreate | ( | MbVector & | , |
MbVector & | , | ||
SArray< MbVector > & | , | ||
double & | , | ||
double & | , | ||
double & | , | ||
double & | , | ||
bool | black = false |
||
) |
Подготовить вычисление сплайна.
Подготовить параметры для вычисления кубического сплайна. Если кривая не замкнута и black = true, система решается при условии отсутствия узла.