C3D Toolkit
Kernel - 117936, Vision - 2.7.0.41
|
Составной кубический сплайн Эрмитa в двумерном пространстве. Подробнее...
#include <cur_hermit.h>
Открытые члены | |
void | LocalCoordinate (double &t, ptrdiff_t &index1, ptrdiff_t &index2, double ¶m1, double ¶m2, double ¶mD, double ¶mW, double "a1, double "a2) const |
Определение местных координат области поверхности | |
Общие функции геометрического объекта. | |
MbePlaneType | IsA () const override |
Получить тип объекта. | |
bool | SetEqual (const MbPlaneItem &) override |
Сделать объекты равным. Подробнее... | |
void | Transform (const MbMatrix &matr, MbRegTransform *ireg=nullptr, const MbSurface *newSurface=nullptr) override |
Преобразовать согласно матрице. Подробнее... | |
void | Move (const MbVector &to, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Сдвинуть вдоль вектора. Подробнее... | |
void | Rotate (const MbCartPoint &pnt, const MbDirection &angle, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Повернуть вокруг точки. Подробнее... | |
bool | IsSame (const MbPlaneItem &other, double accuracy=LENGTH_EPSILON) const override |
Определить, являются ли объекты равными. Подробнее... | |
MbPlaneItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Создать копию. Подробнее... | |
Общие функции кривой | |
MbeState | DeletePart (double t1, double t2, MbCurve *&part2) override |
Удалить часть кривой. Подробнее... | |
MbeState | TrimmPart (double t1, double t2, MbCurve *&part2) override |
Оставить часть кривой. Подробнее... | |
MbCurve * | Trimmed (double t1, double t2, int sense) const override |
Построить усеченную кривую. Подробнее... | |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo &) const override |
Построить NURBS копию кривой. Подробнее... | |
MbCurve * | NurbsCurve (const MbNurbsParameters &) const override |
Построить NURBS копию кривой. Подробнее... | |
MbContour * | NurbsContour () const override |
Аппроксимировать кривую контуром из NURBS-кривых. | |
double | GetTMin () const override |
Получить минимальное значение параметра. | |
double | GetTMax () const override |
Получить максимальное значение параметра. | |
void | PointOn (double &t, MbCartPoint &p) const override |
Вычислить точку на кривой. Подробнее... | |
void | FirstDer (double &t, MbVector &fd) const override |
Вычислить первую производную. | |
void | SecondDer (double &t, MbVector &sd) const override |
Вычислить вторую производную. | |
void | ThirdDer (double &t, MbVector &td) const override |
Вычислить третью производную. | |
void | _PointOn (double t, MbCartPoint &p) const override |
Вычислить точку на кривой и её продолжении. Подробнее... | |
void | Explore (double &t, bool ext, MbCartPoint &pnt, MbVector &fir, MbVector *sec, MbVector *thir) const override |
Вычислить значения точки и производных для заданного параметра. Подробнее... | |
void | Inverse (MbRegTransform *iReg=nullptr) override |
Изменить направления кривой на противоположное. | |
double | Step (double t, double sag) const override |
Вычислить шаг параметра. Подробнее... | |
double | DeviationStep (double t, double angle) const override |
Вычислить шаг параметра. Подробнее... | |
void | IntersectHorizontal (double y, SArray< double > &) const override |
Найти пересечения кривой с горизонтальной прямой. Подробнее... | |
void | IntersectVertical (double x, SArray< double > &) const override |
Найти пересечения кривой с вертикальной прямой. Подробнее... | |
double | PointProjection (const MbCartPoint &pnt) const override |
Найти проекцию точки на кривую. | |
bool | NearPointProjection (const MbCartPoint &pnt, double xEpsilon, double yEpsilon, double &t, bool ext, MbRect1D *tRange=nullptr) const override |
Найти проекцию точки на кривую. Подробнее... | |
double | CalculateMetricLength () const override |
Вычислить метрическую длину кривой. | |
bool | GetWeightCentre (MbCartPoint &wc) const override |
Вычислить центр тяжести кривой. | |
void | CalculateGabarit (MbRect &r) 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 |
Получить границы участков кривой, которые описываются одной аналитической функцией. | |
bool | IsStraight (bool ignoreParams=false) const override |
Определить, является ли кривая прямолинейной. | |
size_t | GetCount () const override |
Определить количество разбиений для прохода в операциях. | |
ptrdiff_t | GetNearPointIndex (const MbCartPoint &pnt) const override |
Выдать индекс точки, ближайшей к заданной. | |
void | Rebuild () override |
Перестроить кривую. | |
void | SetClosed (bool cls) override |
Установить признак замкнутости. | |
void | AddPoint (const MbCartPoint &pnt) override |
Добавить точку в конец массива контрольных точек. | |
void | InsertPoint (ptrdiff_t index, const MbCartPoint &pnt) override |
Вставить точку в массив контрольных точек. Подробнее... | |
void | InsertPoint (double t, const MbCartPoint &pnt, double xEps, double yEps) override |
Вставить точку в массив контрольных точек. Подробнее... | |
void | InsertPoint (double t, const MbCartPoint &pnt, const MbVector &v, double xEps, double yEps) override |
Вставить точку в массив контрольных точек. Подробнее... | |
virtual void | SetCurveValue (double t, const MbCartPoint &pnt, double tDelta, const MbVector &v, double xEps, double yEps) |
void | ChangePoint (ptrdiff_t index, const MbCartPoint &pnt) override |
Заменить точку. Подробнее... | |
void | RemovePoint (ptrdiff_t index) override |
Удалить характерную точку с заданным индексом. | |
void | GetVector (ptrdiff_t index, MbVector &vec) const |
MbCartPoint & | SetPoint (ptrdiff_t index) |
MbVector & | SetVector (ptrdiff_t index) |
bool | SetTangentVectors (const SArray< MbVector > &tauVectors) |
size_t | GetPointsCount () const override |
Выдать количество контрольных точек. | |
size_t | GetParamsCount () const override |
Выдать количество параметров. | |
bool | CheckParam (double &t, ptrdiff_t &i0, ptrdiff_t &i1, double &t0, double &t1) const override |
Переместить параметр в область определения кривой. Подробнее... | |
double | GetParam (ptrdiff_t index) const override |
Вернуть параметр, соответствующий точке с указанным индексом. | |
virtual MbCurve * | CicleCopy (double t1, double t2) const |
void | GetRuleInterval (ptrdiff_t index, double &t1, double &t2) const override |
Вернуть интервал влияния точки кривой. Подробнее... | |
void | SetBegEndDerivesEqual () override |
Установить равные производные на краях. | |
void | ClosedBreak () override |
Сделать незамкнутой, оставив совпадающими начало и конец. | |
bool | SetLimitParam (double newTMin, double newTMax) |
void | CalculateDerivatives () |
void | SetLimitVector (int n, const MbVector &v) |
MbHermit * | CurvesCombine (double t0, double w0, bool add, const MbHermit &init, double t1, double w1, double koef, bool checkClosed) const |
Создать кривую путём сращивания части данной кривой с частью кривой init. | |
size_t | GetVectorListCount () const |
template<class VectorsVector > | |
void | GetVectorList (VectorsVector &vectors) const |
const MbVector & | _GetVectorList (size_t i) const |
MbVector & | _SetVectorList (size_t i) |
size_t | GetTListCount () const |
void | GetTList (SArray< double > ¶ms) const override |
double | _GetTList (size_t i) const |
bool | AddPoints (SArray< double > ¶ms, SArray< MbCartPoint > &points) |
bool | InsertPoints (SArray< double > ¶ms, SArray< MbCartPoint > &points) |
bool | DerivativesCorrection (double accuracy) |
ptrdiff_t | GetIndex (double t) const |
Определение максимального индекса массива параметров слева. | |
void | GetProperties (MbProperties &properties) override |
Выдать свойства объекта. Подробнее... | |
void | SetProperties (const MbProperties &properties) override |
Изменить свойства объекта. Подробнее... | |
![]() | |
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 void | GetPoint (ptrdiff_t index, MbCartPoint &pnt) const |
Выдать характерную точку. Подробнее... | |
virtual void | RemovePoints () |
Удалить все точки. | |
virtual bool | ChangePointsValue (const SArray< MbCartPoint > &pntList) |
Изменить характерные точки. Подробнее... | |
virtual void | AddAfter (const MbCartPoint &pnt, ptrdiff_t index) |
Вставить точку в массив контрольных точек. Подробнее... | |
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 | 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 | _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 | IsDegenerate (double eps=Math::LengthEps) 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 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 |
Найти проекцию точки на кривую. Подробнее... | |
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 |
Вычислить минимальную длину кривой между двумя точками на ней. Подробнее... | |
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 MbHermit * | Create (const MbHermit &) |
Создать копию сплайна. Подробнее... | |
static MbHermit * | Create (const SArray< MbCartPoint > &initList, bool cls) |
Создать сплайн. Подробнее... | |
static MbHermit * | Create (const SArray< double > &initParams, const SArray< MbCartPoint > &initPoints, bool cls) |
Создать сплайн. Подробнее... | |
static MbHermit * | Create (const SArray< double > &initParams, const SArray< MbCartPoint > &initPoints, const SArray< MbVector > &initVectors, bool cls) |
Создать сплайн. Подробнее... | |
static MbHermit * | Create (const SArray< double > &initParams, const SArray< MbCartPoint > &initPoints, const SArray< ptrdiff_t > &vLabels, bool cls) |
Создать сплайн, согласованный с LoftSurface. Подробнее... | |
static MbHermit * | Create (const MbCartPoint &p1, const MbCartPoint &p2) |
Создать сплайн. Подробнее... | |
static MbHermit * | Create (double t1, const MbCartPoint &p1, const MbVector &v1, double t2, const MbCartPoint &p2, const MbVector &v2) |
Создать сплайн. Подробнее... | |
Защищенные члены | |
MbHermit () | |
Конструктор по умолчанию. | |
MbHermit (const MbHermit &) | |
Конструктор копирования. | |
MbHermit (const SArray< MbCartPoint > &initList, 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 |
Количество сплайнов. | |
![]() | |
SArray< MbCartPoint > | pointList |
Множество контрольных точек. | |
ptrdiff_t | uppIndex |
Количество участков кривой (равно количество контрольных точек минус единица). | |
bool | closed |
Признак замкнутости кривой. | |
MbRect | rect |
Габаритный прямоугольник. | |
double | metricLength |
Метрическая длина сплайна. | |
![]() | |
SimpleName | name |
Имя кривой. Данные объекта являются временными и используются для внутренних целей. | |
Составной кубический сплайн Эрмитa в двумерном пространстве.
Составной кубический сплайн Эрмитa определяется контрольными точками pointList, первыми производными сплайна vectorList в контрольных точках и значениями параметра сплайна tList в контрольных точках. Для не замкнутой кривой множества pointList, vectorList и tList должны содержать одинаковое количество элементов. Для замкнутой кривой количество элементов tList должно быть на единицу больше, чем количество элементов pointList и vectorList. Сплайн Эрмитa является составной кубический кривой. На каждом участке между двумя соседними контрольными точками сплайн описывается кубическим полиномом с заданными точками и производными на краях. Сплайн Эрмитa проходит через свои контрольные точки при значениях параметра из множества tList и имеет в них заданные производные. Кубические полиномы гладко стыкуются в контрольных точках и имеют в них непрерывные первые производные. Если производные в контрольных точках не заданы, то они рассчитываются по данной контрольной точке и двух её соседним точкам. Для этого то трём точкам и значениям параметров в них строится парабола и вычисляется производная параболы в средней точке. Производные в краевых контрольных точках определяются по двум точкам и условию на краю для второй производной (ноль).
|
protected |
Конструктор по набору точек и признаку замкнутости.
Конструктор по набору точек и признаку замкнутости.
[in] | initList | - Массив точек кривой. Для замкнутой кривой количество точек должно быть не меньше трех, для разомкнутой кривой - не меньше двух. |
[in] | cls | - Замкнутость кривой. |
Создать копию сплайна.
Создать копию сплайна.
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | initList | - Набор контрольных точек. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | initParams | - Набор параметров в контрольных точках. |
[in] | initPoints | - Набор контрольных точек. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | initParams | - Набор параметров в контрольных точках. |
[in] | initPoints | - Набор контрольных точек. |
[in] | initVectors | - Набор производных в контрольных точках. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн, согласованный с LoftSurface.
Создать сплайн и установить параметры сплайна.
[in] | initParams | - Набор параметров в контрольных точках. |
[in] | initPoints | - Набор контрольных точек. |
[in] | vLabels | - Массив, содержащий номера соседних точек с одинаковыми производными. |
[in] | cls | - Признак замкнутости. |
|
static |
Создать сплайн.
Создать прямолинейный сплайн и установить параметры сплайна.
[in] | p1 | - Начальная точка кривой. |
[in] | p2 | - Конечная точка кривой. |
|
static |
Создать сплайн.
Создать сплайн и установить параметры сплайна.
[in] | t1 | - Начальный параметр. |
[in] | p1 | - Начальная точка кривой. |
[in] | v1 | - Касательный вектор к кривой в начальной точке. |
[in] | t2 | - Конечный параметр. |
[in] | p2 | - Конечная точка кривой. |
[in] | v2 | - Касательный вектор к кривой в конечной точке. |
|
overridevirtual |
Сделать объекты равным.
Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.
[in] | item | - Объект для инициализации. |
Замещает 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] | item | - Объект для сравнения. |
[in] | accuracy | - Точность сравнения. |
Замещает MbPlaneItem.
|
overridevirtual |
Создать копию.
Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.
[in] | iReg | - Регистратор. |
Замещает MbPlaneItem.
Удалить часть кривой.
Удалить часть кривой между параметрами 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 |
Построить усеченную кривую.
Строит усеченную кривую, начало которой соответствует точке с параметром t1 и конец - точке с параметром t2. Можно изменить направление полученной кривой относительно исходной с помощью параметра sense. Если кривая замкнута, можно получить усеченную кривую, проходящую через начало кривой.
В случае замкнутой кривой (или для дуги - исключение) три параметра sense, t1 и t2 однозначно определяют результат. В случае разомкнутой кривой параметр sense и параметрами усечения должны соответствовать друг другу:
1) если sense == 1, то t1 < t2,
2) если sense == -1, то t1 > t2.
Если есть несоответствие между sense и параметрами усечения, то приоритетным параметром считается sense. Если параметры t1 и t2 равны и кривая замкнута, в результате должны получить замкнутую кривую.
[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.
|
overridevirtual |
Вычислить точку на кривой.
Скорректировать параметры при выходе их за пределы области определения и вычислить точку на кривой.
[in] | t | - Параметр curve. |
[out] | p | - Вычисленная точка на кривой. |
Замещает MbCurve.
|
overridevirtual |
Вычислить точку на кривой и её продолжении.
Вычислить точку на кривой в том числе и за пределами области определения параметрa.
[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 |
Найти пересечения кривой с горизонтальной прямой.
Найти пересечения кривой с горизонтальной прямой.
[in] | y | - Ордината точек горизонтальной прямой. |
[in,out] | cross | - Массив параметров кривой, соответствующих точкам пересечения. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Найти пересечения кривой с вертикальной прямой.
Найти пересечения кривой с вертикальной прямой.
[in] | x | - Абсцисса точек вертикальной прямой. |
[in,out] | cross | - Массив параметров кривой, соответствующих точкам пересечения. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Найти проекцию точки на кривую.
Найти ближайшую проекцию точки на кривую или ее продолжение по заданному начальному приближению. Если задан диапазон изменения параметра tRange - то надо найти проекцию в заданном диапазоне. Диапазон параметра может выходить за область определения параметра кривой. Используется метод Ньютона.
[in] | pnt | - Заданная точка. |
[in] | xEpsilon | - Точность определения проекции по оси x. |
[in] | yEpsilon | - Точность определения проекции по оси y. |
[in,out] | t | - На входе - начальное приближение, на выходе - параметр кривой, соответствующий ближайшей проекции. |
[in] | ext | - Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать). |
[in] | tRange | - Диапазон изменения параметра, в котором надо найти решение. |
Переопределяет метод предка MbCurve.
|
overridevirtual |
Определить габаритный прямоугольник кривой.
Для получения габарита объекта присланный прямоугольник делается пустым. Затем вычисляются габариты объекта и сохраняются в прямоугольнике rect.
Переопределяет метод предка MbCurve.
|
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 |
Вставить точку в массив контрольных точек.
Вставить точку и соответствующий ей вектор производной, которая будет соответствовать параметру t кривой. Если параметр t отличается от параметра некоторой точки меньше, чем на заданную погрешность, то новая точка не вставляется, заменяется уже существующая близкая по параметру точка.
[in] | t | - Параметр новой точки. |
[in] | pnt | - Заданная точка. |
[in] | v | - Производная в заданной точке. |
[in] | xEps | - Точность по x. |
[in] | yEps | - Точность по y. |
Переопределяет метод предка MbPolyCurve.
|
overridevirtual |
Заменить точку.
Заменить точку.
[in] | index | - Индекс изменяемой точки. |
[in] | pnt | - Заданная точка. |
Переопределяет метод предка MbPolyCurve.
|
overridevirtual |
Переместить параметр в область определения кривой.
Проверить параметр. Если он выходит за диапазон изменения параметров кривой, то в случае замкнутой кривой привести его в область определения, изменяя на период. В случае незамкнутой кривой - сделать равным ближайшему граничному параметру. Определить индексы характерный точек, между которыми находится заданный параметр, и их параметрические значения.
[in,out] | t | - На входе - заданный параметр. На выходе - параметр в области определения кривой. |
[out] | i0 | - Индекс характерной точки слева от заданного параметра. |
[out] | i1 | - Индекс характерной точки справа от заданного параметра. |
[out] | t0 | - Параметр характерной точки слева от заданного параметра. |
[out] | t1 | - Параметр характерной точки справа от заданного параметра. |
Замещает MbPolyCurve.
|
overridevirtual |
Вернуть интервал влияния точки кривой.
Определяет, на каком интервале параметра кривой скажется изменение характерной точки с индексом index.
[in] | index | - Номер характерной точки. |
[out] | t1 | - Минимальный параметр интервала влияния. |
[out] | t2 | - Максимальный параметр интервала влияния. |
Замещает MbPolyCurve.
|
overridevirtual |
Выдать свойства объекта.
Выдать внутренние данные (свойства) объекта для их просмотра и модификации.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.
|
overridevirtual |
Изменить свойства объекта.
Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbPlaneItem.