C3D Toolkit
Kernel - 112706, Vision - 2.6.3.0
|
Контур в трёхмерном пространстве. Подробнее...
#include <cur_contour3d.h>
Открытые члены | |
MbContour3D () | |
Пустой контур. Конструктор по набору кривых. | |
Общие функции геометрического объекта. | |
virtual MbeSpaceType | IsA () const |
Получить тип объекта. | |
virtual MbeSpaceType | Type () const |
Получить групповой тип объекта. | |
virtual MbSpaceItem & | Duplicate (MbRegDuplicate *=c3d_null) const |
Создать копию объекта. Подробнее... | |
virtual bool | IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const |
Определить, являются ли объекты равными. Подробнее... | |
virtual bool | SetEqual (const MbSpaceItem &) |
Сделать объекты равным, если они подобны. Подробнее... | |
virtual bool | IsSimilar (const MbSpaceItem &) const |
Определить, являются ли объекты подобными. Подробнее... | |
virtual void | Transform (const MbMatrix3D &, MbRegTransform *=c3d_null) |
Преобразовать объект согласно матрице. Подробнее... | |
virtual void | Move (const MbVector3D &, MbRegTransform *=c3d_null) |
Сдвинуть объект вдоль вектора. Подробнее... | |
virtual void | Rotate (const MbAxis3D &, double angle, MbRegTransform *=c3d_null) |
Повернуть объект вокруг оси на заданный угол. Подробнее... | |
virtual double | DistanceToPoint (const MbCartPoint3D &) const |
Определить расстояние до точки. Подробнее... | |
virtual void | PrepareIntegralData (const bool forced) const |
Рассчитать временные (mutable) данные объекта. Подробнее... | |
virtual bool | IsSpaceSame (const MbSpaceItem &item, double eps=METRIC_REGION) const |
Являются ли объекты идентичными в пространстве. | |
Функции описания области определения кривой. | |
virtual double | GetTMin () const |
Вернуть минимальное значение параметра. | |
virtual double | GetTMax () const |
Вернуть максимальное значение параметра. | |
virtual bool | IsClosed () const |
Определить, является ли кривая замкнутой. Подробнее... | |
virtual bool | IsSmoothConnected (double angleEps) const |
Являются ли стыки контура/кривой гладкими? | |
virtual bool | IsStraight (bool ignoreParams=false) const |
Является ли линия прямолинейной? | |
Функции для работы в области определения кривой. | |
Функции PointOn, FirstDer, SecondDer, ThirdDer,... корректируют параметр при выходе его за пределы области определения. | |
virtual void | PointOn (double &t, MbCartPoint3D &) const |
Вычислить точку на кривой. Подробнее... | |
virtual void | FirstDer (double &t, MbVector3D &) const |
Вычислить первую производную. | |
virtual void | SecondDer (double &t, MbVector3D &) const |
Вычислить вторую производную. | |
virtual void | ThirdDer (double &t, MbVector3D &) const |
Вычислить третью производную. | |
virtual void | Normal (double &t, MbVector3D &) const |
Вычислить вектор главной нормали. | |
Функции для работы внутри и вне области определения кривой. | |
Функции _PointOn, _FirstDer, _SecondDer, _ThirdDer,... не корректируют параметр при выходе за пределы области определения. При выходе за область определения незамкнутая кривая, в общем случае, продолжается по касательной, которую она имеет на соответствующем конце. | |
virtual void | _PointOn (double t, MbCartPoint3D &) const |
Вычислить точку на кривой и её продолжении. Подробнее... | |
virtual void | _FirstDer (double t, MbVector3D &) const |
Вычислить первую производную на кривой и её продолжении. | |
virtual void | _SecondDer (double t, MbVector3D &) const |
Вычислить вторую производную на кривой и её продолжении. | |
virtual void | _ThirdDer (double t, MbVector3D &) const |
Вычислить третью производную на кривой и её продолжении. | |
virtual void | _Normal (double t, MbVector3D &) const |
Вычислить вектор главной нормали (нормализованный) на кривой и её продолжении. | |
Функции доступа к группе данных для работы внутри и вне области определения параметра кривой. | |
virtual void | Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const |
Вычислить значения точки и производных для заданного параметра. Подробнее... | |
Функции движения по кривой | |
virtual double | Step (double t, double sag) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | DeviationStep (double t, double angle) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | MetricStep (double t, double length) const |
Вычислить шаг параметра. Подробнее... | |
Общие функции кривой | |
virtual double | Curvature (double t) const |
Вычислить кривизну кривой. | |
virtual MbNurbs3D * | NurbsCurve (const MbCurveIntoNurbsInfo &) const |
Построить NURBS копию кривой. Подробнее... | |
virtual MbCurve3D * | Trimmed (double t1, double t2, int sense) const |
Построить усеченную кривую. Подробнее... | |
virtual void | Inverse (MbRegTransform *iReg=c3d_null) |
Изменить направление кривой. | |
bool | NormalizeReparametrization () |
virtual bool | IsSimilarToCurve (const MbCurve3D &other, double precision=METRIC_PRECISION) const |
Подобные ли кривые для объединения (слива). | |
virtual bool | NearPointProjection (const MbCartPoint3D &, double &t, bool ext, MbRect1D *tRange=c3d_null) const |
Найти проекцию точки на кривую. Подробнее... | |
virtual double | CalculateMetricLength () const |
Вычислить метрическую длину кривой. | |
virtual double | CalculateLength (double t1, double t2) const |
Вычислить метрическую длину кривой. Подробнее... | |
virtual bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const |
Сдвинуть параметр вдоль кривой. Подробнее... | |
virtual void | CalculateLocalGabarit (const MbMatrix3D &, MbCube &) const |
Рассчитать габарит в локальной системы координат. Подробнее... | |
virtual void | CalculateGabarit (MbCube &) const |
Вычислить габарит кривой. | |
virtual MbCurve * | GetMap (const MbMatrix3D &, MbRect1D *pRgn=c3d_null, VERSION version=Math::DefaultMathVersion(), bool *coincParams=c3d_null) const |
Построить плоскую проекцию некоторой части пространственной кривой. Подробнее... | |
virtual MbCurve * | GetProjection (const MbPlacement3D &place, VERSION version) const |
Построить плоскую проекцию пространственной кривой на плоскость. Подробнее... | |
virtual size_t | GetCount () const |
Определить количество разбиений для прохода в операциях. | |
virtual void | ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init) |
Изменить носитель. Для поверхностных кривых. | |
virtual double | GetRadius () const |
Дать физический радиус кривой или ноль, если это невозможно. Подробнее... | |
virtual bool | IsPlanar (double accuracy=METRIC_EPSILON) const |
Является ли кривая плоской? | |
virtual bool | GetPlacement (MbPlacement3D &place, PlanarCheckParams params=PlanarCheckParams()) const |
Заполнить плейсемент, если кривая плоская. | |
virtual bool | GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const |
Дать плоскую кривую и плейсмент, если пространственная кривая плоская. Подробнее... | |
virtual bool | GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const |
Дать поверхностную кривую, если пространственная кривая поверхностная (после использования вызывать DeleteItem на аргументы). | |
virtual void | GetWeightCentre (MbCartPoint3D &) const |
Выдать центр тяжести кривой. | |
virtual void | GetCentre (MbCartPoint3D &) const |
Выдать центр кривой. | |
virtual void | CalculateMesh (const MbStepData &stepData, const MbFormNote ¬e, MbMesh &mesh) const |
Построить полигональную копию mesh. Подробнее... | |
virtual void | Refresh () |
Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние. | |
virtual void | GetProperties (MbProperties &) |
Выдать свойства объекта. Подробнее... | |
virtual void | SetProperties (const MbProperties &) |
Изменить свойства объекта. Подробнее... | |
virtual void | GetBasisItems (RPArray< MbSpaceItem > &) |
Выдать базовые объекты в присланный контейнер. | |
virtual void | GetBasisPoints (MbControlData3D &) const |
Выдать контрольные точки объекта. | |
virtual void | SetBasisPoints (const MbControlData3D &) |
Изменить объект по контрольным точкам. | |
virtual bool | IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=c3d_null, double epsilon=EPSILON) const |
Непрерывна ли первая производная кривой по длине и направлению? Отсутствуют ли разрывы производной по длине и направлению в стыках сегментов контура? . Подробнее... | |
virtual bool | SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) |
Устранить разрывы производных по длине в стыках сегментов. Устранить разрывы производных по длине в стыках сегментов. . Подробнее... | |
virtual void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) const |
Получить границы участков кривой, которые описываются одной аналитической функцией. | |
virtual void | GetCurvatureSpecialPoints (std::vector< c3d::DoublePair > &points) const |
Найти все особые точки функции кривизны кривой. | |
Функции работы с сегментами контура | |
template<class CurvesVector > | |
bool | Init (const CurvesVector &initSegments, bool sameCurves, bool cls) |
Инициализация по набору кривых (sameCurves - кривые или их копии). | |
template<class PointsVector > | |
bool | Init (const PointsVector &points) |
Инициализация по набору точек (замкнутый контур). | |
ptrdiff_t | FindSegment (double &t, double &tSeg) const |
Найти сегмент контура. Подробнее... | |
size_t | GetSegmentsCount () const |
Выдать количество сегментов контура. | |
template<class CurvesVector > | |
void | GetSegments (CurvesVector &curves) const |
Получить кривые контура. | |
void | DetachSegments () |
Отцепить все сегменты контура. | |
void | DeleteSegments () |
Отсоединить используемые сегменты и удалить остальные. | |
void | DeleteSegment (size_t ind) |
Удалить сегмент контура. | |
MbCurve3D * | DetachSegment (size_t ind) |
Отцепить сегмент контура. | |
const MbCurve3D * | GetSegment (size_t ind) const |
Выдать сегмент контура по индексу. | |
MbCurve3D * | SetSegment (size_t ind) |
Выдать сегмент контура по индексу. | |
void | SetSegment (MbCurve3D &newSegment, size_t ind, bool same) |
Заменить сегмент в контуре. | |
void | AddSegment (MbCurve3D &newSegment, bool same) |
Добавить сегмент в контур. | |
void | AddAtSegment (MbCurve3D &newSegment, size_t ind, bool same) |
Добавить сегмент в контур перед сегментом с индексом ind. | |
void | AddAfterSegment (MbCurve3D &newSegment, size_t ind, bool same) |
Добавить сегмент в контур после сегмента с индексом ind. | |
MbCurve3D * | AddSegment (MbCurve3D &pBasis, double t1, double t2, int sense) |
Добавить (усеченную) копию сегмента в конец контура. Подробнее... | |
void | SegmentsAdd (MbCurve3D &newSegment, bool calculateParamLength=true) |
Добавить сегмент в контур без проверки. | |
bool | GetCornerAngle (size_t index, MbCartPoint3D &origin, MbVector3D &axis, MbVector3D &tau, double &angle, double angleEps) const |
void | Clear () |
Cбросить переменные кэширования. | |
bool | IsSimple () const |
Состоит ли контур из отрезков и дуг? Управление распределением памяти в массиве segments. | |
void | SegmentsReserve (size_t additionalSpace) |
Зарезервировать место. | |
void | SegmentsAdjust () |
Удалить лишнюю память. | |
bool | AddCurveWithRuledCheck (MbCurve3D &curve, double absEps, bool toEndOnly=false, bool checkSame=true, VERSION version=Math::DefaultMathVersion()) |
Добавить новый элемент в начало или конец контура. Подробнее... | |
bool | CheckConnection (double eps=METRIC_PRECISION) const |
Проверка непрерывности контура. | |
void | CalculateParamLength () |
Рассчитать параметрическую длину. | |
void | CheckClosed (double) |
Установить признак замкнутости контура. Содержат ли контура идентичные сегменты. | |
bool | IsSameSegments (const MbContour3D &, double accuracy=METRIC_PRECISION) const |
void | FindCorner (size_t index, MbCartPoint3D &) const |
Нахождение точки сегмента контура по индексу сегмента. | |
Функции работы с именами контура. | |
void | GetSegmentsNames (SimpleNameArray &names) const |
Дать имена сегментов. Подробнее... | |
void | SetSegmentsNames (const SimpleNameArray &names) |
Установить имена сегментов. Подробнее... | |
![]() | |
virtual | ~MbCurve3D () |
Деструктор. | |
VISITING_CLASS (MbCurve3D) | |
Реализация функции, инициирующей посещение объекта. | |
size_t | size () const |
Размер кривой трактуемой как в виде вектора кривых. | |
const MbCurve3D * | operator[] (size_t) const |
Оператор доступа. | |
virtual MbeSpaceType | Family () const |
Получить семейство объекта. | |
virtual MbCurve3D & | InverseDuplicate () const |
Сделать копию с измененным направлением. | |
virtual void | AddYourGabaritTo (MbCube &) const |
Расширить присланный габаритный куб так, чтобы он включал в себя данный объект. Подробнее... | |
virtual double | GetPeriod () const |
Вернуть период. Если кривая непериодическая, то 0. | |
virtual bool | IsPeriodic () const |
Определить, является ли замкнутая кривая периодической. | |
bool | IsTouch (double eps=Math::metricPrecision) const |
Определить, замкнута ли кривая фактически независимо от гладкости замыкания. Подробнее... | |
virtual void | Tangent (double &t, MbVector3D &) const |
Вычислить касательный вектор (нормализованный). | |
virtual void | BNormal (double &t, MbVector3D &) const |
Вычислить вектор бинормали. | |
virtual void | _Tangent (double t, MbVector3D &) const |
Вычислить касательный вектор (нормализованный) на кривой и её продолжении. | |
virtual void | _BNormal (double t, MbVector3D &) const |
Вычислить вектор бинормали (нормализованный) на кривой и её продолжении. | |
virtual void | FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const |
Вычислить точку и производные на кривой. Подробнее... | |
double | CurveStep (const double &t, const MbStepData &stepData) const |
Вычислить шаг параметра. Подробнее... | |
virtual void | ResetTCalc () const |
Сбросить текущее значение параметра. | |
virtual const MbCurve3D & | GetBasisCurve () const |
Вернуть базовую кривую, если есть, или себя | |
virtual MbCurve3D & | SetBasisCurve () |
Вернуть базовую кривую, если есть, или себя | |
virtual void | ThirdMetricDer (double t, MbVector3D &vect) const |
Вычислить вторую производную касательной. | |
MbNurbs3D * | NurbsCurve (const MbCurveIntoNurbsInfo *nInfo=c3d_null) const |
Построить NURBS копию кривой. Подробнее... | |
virtual MbCurve3D * | NurbsCurve (const MbNurbsParameters &tParameters) const |
Построить NURBS копию кривой. Подробнее... | |
virtual size_t | NurbsCurveMinPoints (const MbNurbsParameters &tParameters, double epsilon=c3d::METRIC_DELTA) const |
Определить число узлов NURBS кривой, нужное для аппроксимации кривой с заданной точностью. Подробнее... | |
double | GetParamLength () const |
Вернуть параметрическую длину кривой. | |
virtual double | GetMetricLength () const |
Вычислить метрическую длину кривой. | |
virtual double | GetLengthEvaluation () const |
Вычислить метрическую длину кривой. Подробнее... | |
virtual bool | IsDegenerate (double eps=METRIC_PRECISION) const |
Проверить вырожденная ли кривая. | |
virtual bool | ChangeCarrierBorne (const MbSpaceItem &item, MbSpaceItem &init, const MbMatrix &matr) |
Изменить носитель. Подробнее... | |
virtual MbProperty & | CreateProperty (MbePrompt name) const |
Создать собственное свойство с заданием его имени. | |
virtual void | CalculatePolygon (const MbStepData &stepData, MbPolygon3D &polygon) const |
Рассчитать массив точек для отрисовки. Подробнее... | |
DEPRECATE_DECLARE void | CalculatePolygon (double, MbPolygon3D &) const |
virtual MbeNewtonResult | PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &t, bool ext) const |
Найти проекцию точки на кривую. Подробнее... | |
virtual MbeNewtonResult | IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &t) const |
Найти изоклины кривой. Подробнее... | |
virtual void | GetIsoclinal (const MbVector3D &nor, SArray< double > &tIso) const |
Найти все изоклины кривой. Подробнее... | |
virtual double | DistanceToCurve (const MbCurve3D &curve2, double &t1, double &t2) const |
Вычислить ближайшее расстояние до кривой. | |
virtual double | DistanceToPlace (const MbPlacement3D &place, double &t0, double &angle) const |
Ближайшая точка кривой к плейсменту. | |
virtual bool | GetCircleAxis (MbAxis3D &axis) const |
Дать ось окружности, геометрически совпадающей с данной кривой Подробнее... | |
virtual MbCurve * | GetMapPsp (const MbMatrix3D &into, double zNear, MbRect1D *pRegion=c3d_null) const |
Построить плоскую проекцию некоторой части пространственной кривой. Подробнее... | |
void | GetPointsByEvenParamDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const |
Выдать n точек кривой с равными интервалами по параметру. | |
void | GetPointsByEvenParamDelta (size_t n, SArray< MbCartPoint3D > &pnts) const |
virtual void | GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const |
Выдать n точек кривой с равными интервалами по длине дуги. | |
void | GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint3D > &pnts) const |
bool | IsSpaceNear (const MbCurve3D &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const |
Определить, близки ли две кривые метрически. Подробнее... | |
bool | IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const |
Проверить, лежит ли точка на кривой. | |
double | GetTMid () const |
Вернуть середину параметрического диапазона кривой. | |
double | GetTRange () const |
Вернуть параметрическую длину кривой. | |
MbCartPoint3D | PointOn (double &t) const |
Вычислить точку на кривой. | |
MbVector3D | FirstDer (double &t) const |
Вычислить первую производную. | |
MbVector3D | SecondDer (double &t) const |
Вычислить вторую производную. | |
MbVector3D | ThirdDer (double &t) const |
Вычислить третью производную. | |
MbCartPoint3D | GetLimitPoint (ptrdiff_t number) const |
Вычислить граничную точку. Подробнее... | |
void | GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const |
Вычислить граничную точку. Подробнее... | |
MbVector3D | GetLimitTangent (ptrdiff_t number) const |
Вычислить касательный вектор в граничной точке. Подробнее... | |
void | GetLimitTangent (ptrdiff_t number, MbVector3D &v) const |
Вычислить касательный вектор в граничной точке. Подробнее... | |
bool | AreLimitPointsEqual () const |
Равны ли граничные точки. Подробнее... | |
bool | SetInParamRegion (double &t) const |
Загнать в параметрическую область. | |
bool | IsParamOn (double t, double eps) const |
Проверить, что параметр в диапазоне кривой. | |
bool | IsInverseSame (const MbCurve3D &curve, double accuracy=LENGTH_EPSILON) const |
Являются ли кривая инверсно такой же? | |
virtual bool | IsReparamSame (const MbCurve3D &curve, double &factor) const |
Определить, является ли кривая репараметризованно такой же. Подробнее... | |
virtual double | GetParamToUnit () const |
Дать приращение параметра, осреднённо соответствующее единичной длине в пространстве. | |
virtual double | GetParamToUnit (double t) const |
Дать приращение параметра, соответствующее единичной длине в пространстве. | |
double | GetTEpsilon () const |
Дать минимально различимую величину параметра. | |
double | GetTEpsilon (double t) const |
Дать минимально различимую величину параметра. | |
double | GetTRegion () const |
Дать минимально различимую величину параметра. | |
double | GetTRegion (double t) const |
Дать минимально различимую величину параметра. | |
virtual const MbCurve3D & | GetSubstrate () const |
Выдать подложку или себя. | |
virtual MbCurve3D & | SetSubstrate () |
Выдать подложку или себя. | |
virtual int | SubstrateCurveDirection () const |
Направление подложки относительно кривой или наоборот. | |
virtual void | SubstrateToCurve (double &) const |
Преобразовать параметр подложки в параметр кривой. | |
virtual void | CurveToSubstrate (double &) const |
Преобразовать параметр кривой в параметр подложки. | |
bool | GetPlaneCurve (SPtr< MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const |
Дать плоскую кривую и плейсмент, если пространственная кривая плоская. Подробнее... | |
bool | GetPlaneCurve (SPtr< const MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const |
Дать плоскую кривую и плейсмент, если пространственная кривая плоская. Подробнее... | |
bool | GetSurfaceCurve (SPtr< MbCurve > &curve2d, SPtr< MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const |
Дать поверхностную кривую, если пространственная кривая поверхностная (после использования вызывать DeleteItem на аргументы). | |
bool | GetSurfaceCurve (SPtr< const MbCurve > &curve2d, SPtr< const MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const |
Дать поверхностную кривую, если пространственная кривая поверхностная (после использования вызывать DeleteItem на аргументы). | |
virtual bool | IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const |
Является ли объект смещением. | |
void | CalculateGrid (double radius, const MbStepData &stepData, MbMesh &mesh) const |
Аппроксимация кривой плоскогранной трубкой радиуса radius. | |
SimpleName | GetCurveName () const |
Имя кривой. | |
void | SetCurveName (SimpleName newName) |
Установить имя кривой. | |
![]() | |
virtual | ~MbSpaceItem () |
Деструктор. | |
void | PrepareWrite () const |
Регистрация объекта. Подробнее... | |
virtual MbeRefType | RefType () const |
Получить регистрационный тип (для копирования, дублирования). | |
virtual bool | IsFamilyRegistrable () const |
Принадлежит ли объект к регистрируемому семейству. | |
void | CalculateWire (const MbStepData &stepData, MbMesh &mesh) const |
void | CalculateWire (double sag, MbMesh &mesh) 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 |
Получить имя класса. | |
![]() | |
MbRefItem () | |
Конструктор без параметров. | |
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 |
Выдать указатель на объект мьютекса. Возращает c3d_null, если параллельности нет. Для использования в ScopedLock. | |
Защищенные члены | |
MbContour3D (const MbContour3D &, MbRegDuplicate *) | |
Конструктор копирования. | |
![]() | |
MbCurve3D () | |
Конструктор по умолчанию. | |
MbCurve3D (const MbCurve3D &other) | |
Конструктор копирования. | |
![]() | |
MbSpaceItem () | |
Конструктор без параметров. | |
Защищенные данные | |
RPArray< MbCurve3D > | segments |
Множество сегментов контура. | |
bool | closed |
Признак замкнутости кривой. | |
double | paramLength |
Параметрическая длина контура. | |
![]() | |
SimpleName | name |
Имя кривой. | |
Контур в трёхмерном пространстве.
Контур представляет собой составную кривую, в которой начало каждого последующего сегмента стыкуется с концом предыдущего. Контур является замкнутым, если конец последнего сегмента стыкуется с началом первого сегмента.
Если сегменты составной кривой стыкуются не гладко, то составная кривая будет иметь изломы. В общем случае в местах стыковки сегментов производные составной кривой терпят разрыв по длине и направлению.
Начальное значение параметра составной кривой равно нулю. Параметрическая длина составной кривой равна сумме параметрических длин составляющих её сегментов.
При вычислении радиуса-вектора составной кривой сначала определяется сегмент, которому соответствует значение параметра составной кривой, и соответствующее значение собственного параметра этого сегмента. Далее вычисляется радиус-вектор сегмента, который и будет радиусом-вектором составной кривой.
В качестве сегментов составной кривой не используются другие составные кривые. Если составную кривую нужно построить на основе других составных кривых, то последние должны рассматриваться как совокупность составляющих их кривых, а не как единые кривые.
Трёхмерный контур используется для пространственного моделирования, например, для описания траекторий движения.
|
virtual |
Создать копию объекта.
Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.
[in] | iReg | - Регистратор. |
Замещает MbCurve3D.
|
virtual |
Определить, являются ли объекты равными.
Равными считаются однотипные объекты, все данные которых одинаковы (равны).
[in] | item | - Объект для сравнения. |
[in] | accuracy | - Точность сравнения. |
Замещает MbCurve3D.
|
virtual |
Сделать объекты равным, если они подобны.
Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.
[in] | item | - Объект для инициализации. |
Замещает MbCurve3D.
|
virtual |
Определить, являются ли объекты подобными.
Подобными считаются однотипные объекты, данные которых можно приравнять или данные так же являются подобными (указатели). Подобный объект можно инициализировать по данным подобного ему объекта (приравнять один другому без изменения адресов).
[in] | item | - Объект для сравнения. |
Переопределяет метод предка MbSpaceItem.
|
virtual |
Преобразовать объект согласно матрице.
Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.
[in] | matr | - Матрица преобразования. |
[in] | iReg | - Регистратор. |
Замещает MbCurve3D.
|
virtual |
Сдвинуть объект вдоль вектора.
Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.
[in] | to | - Вектор сдвига. |
[in] | iReg | - Регистратор. |
Замещает MbCurve3D.
|
virtual |
Повернуть объект вокруг оси на заданный угол.
Повернуть объект вокруг оси на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.
[in] | axis | - Ось поворота. |
[in] | angle | - Угол поворота. |
[in] | iReg | - Регистратор. |
Замещает MbCurve3D.
|
virtual |
Определить расстояние до точки.
Определить расстояние до точки.
[in] | point | - Точка. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Рассчитать временные (mutable) данные объекта.
Рассчитать временные данные объекта в зависимости от параметра forced. Если параметр forced равен false, рассчитываются только ещё не насчитанные данные. Если параметр forced равен true, пересчитываются все временные данные объекта. Принудительный перерасчёт.
Переопределяет метод предка MbCurve3D.
|
virtual |
Определить, является ли кривая замкнутой.
Определить, является ли кривая замкнутой.
Замкнутой считается кривая, если она циклична:
Замещает MbCurve3D.
|
virtual |
Вычислить точку на кривой.
Скорректировать параметры при выходе их за пределы области определения и вычислить точку на кривой.
[in] | t | - Параметр curve. |
[out] | p | - Вычисленная точка на кривой. |
Замещает MbCurve3D.
|
virtual |
Вычислить точку на кривой и её продолжении.
Вычислить точку на кривой в том числе и за пределами области определения параметрa.
[in] | t | - Параметр curve. |
[out] | p | - Вычисленная точка на кривой. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Вычислить значения точки и производных для заданного параметра.
Значения точки и производных вычисляются в пределах области определения и на расширенной кривой.
[in] | t | - Параметр. |
[in] | ext | - В пределах области определения (false), на расширенной кривой (true). |
[out] | pnt | - Точка. |
[out] | fir | - Производная. |
[out] | sec | - Вторая производная по t, если не ноль. |
[out] | thir | - Третья производная по t, если не ноль. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Вычислить шаг параметра.
Вычислить шаг параметра для аппроксимации кривой по величине прогиба кривой. Вычисление шага проходит с учетом радиуса кривизны. Шаг аппроксимации кривой выбирается таким образом, чтобы отклонение кривой от ее полигона не превышало заданную величину прогиба.
[in] | t | - Параметр, определяющий точку на кривой, в которой надо вычислить шаг. |
[in] | sag | - Максимально допустимая величина прогиба. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Вычислить шаг параметра.
Вычислить шаг параметра для аппроксимации кривой по углу отклонения касательной. Шаг аппроксимации кривой выбирается таким образом, чтобы угловое отклонение касательной кривой в следующей точке не превышало заданную величину ang.
[in] | t | - Параметр, определяющий точку на кривой, в которой надо вычислить шаг. |
[in] | ang | - Максимально допустимый угол отклонения касательной. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Вычислить шаг параметра.
Вычислить шаг параметра для аппроксимации кривой по заданной метрической длине шага вдоль кривой.
[in] | t | - Параметр, определяющий точку на кривой, в которой надо вычислить шаг. |
[in] | len | - Максимальная метрическая длина шага вдоль кривой. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Построить NURBS копию кривой.
Строит NURBS кривую, аппроксимирующую заданную в диапазоне параметров [t1, t2] с заданным направлением. По возможности, строит точную кривую, возможно с кратными узлами. Количеством узлов для NURBS определяется в зависимости от кривой.
[in] | t1 | - Параметр, соответствующий началу аппроксимируемой части кривой. |
[in] | t2 | - Параметр, соответствующий концу аппроксимируемой части кривой. |
[in] | sense | - Совпадает ли направление возрастания параметра вдоль NURBS кривой с направлением на исходной кривой. sense > 0 - направление совпадает. |
[in] | nInfo | - Параметры преобразования кривой в NURBS. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Построить усеченную кривую.
Строит усеченную кривую, начало которой соответствует точке с параметром 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 - направление кривой меняется на обратное. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Найти проекцию точки на кривую.
Найти ближайшую проекцию точки на кривую или ее продолжение по заданному начальному приближению. Если задан диапазон изменения параметра tRange - то надо найти проекцию в заданном диапазоне. Диапазон параметра может выходить за область определения параметра кривой. Используется метод Ньютона.
[in] | pnt | - Заданная точка. |
[in,out] | t | - На входе - начальное приближение, на выходе - параметр кривой, соответствующий ближайшей проекции. |
[in] | ext | - Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать). |
[in] | tRange | - Диапазон изменения параметра, в котором надо найти решение. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Вычислить метрическую длину кривой.
Вычислить метрическую длину разомкнутой кривой от параметра t1 до t2. Должно выполнятся условие t1 < t2.
[in] | t1 | - Начальный параметр отрезка кривой. |
[in] | t2 | - Конечный параметр отрезка кривой. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Сдвинуть параметр вдоль кривой.
Сдвинуть параметр вдоль кривой на заданное расстояние в заданном направлении. Новое значение параметра сохраняется в переменной t. Если кривая не замкнута и длина ее части от точки с параметром t до конца в заданном направлении меньше, чем нужное смещение, то вычисления происходят на продолжении кривой, если можно построить продолжение.
[in,out] | t | - На входе - исходное значение параметра. На выходе - новое значение параметра. |
[in] | len | - Величина смещения вдоль кривой. |
[in] | curveDir | - Направление смещения. Если curveDir - неотрицательно, то смещение направлено в сторону увеличения параметра. Иначе - в сторону уменьшения параметра. |
[in] | eps | - Точность вычислений. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Рассчитать габарит в локальной системы координат.
Для получения габарита объекта относительно локальной системы координат, присланный куб делается пустым. Затем вычисляются габариты объекта в локальной системе координат и сохраняются в кубе cube.
[in] | into | - Матрица перехода от текущей для объекта системы координат к локальной системе координат. |
[in,out] | cube | - Куб с информацией по габаритам. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Построить плоскую проекцию некоторой части пространственной кривой.
Построить плоскую проекцию некоторой части пространственной кривой.
[in] | into | - Матрица преобразования из глобальной системы координат в видовую плоскость. |
[in] | pRegion | - Отображаемая часть кривой (paramRegion.x = t1, paramRegion.y = t2), по умолчанию - вся кривая. |
[in] | version | - Версия, по умолчанию - последняя. |
[in,out] | coincParams | - Флаг совпадения параметризации исходной кривой и ее проекции если coincParams != c3d_null, функция попытается сделать проекцию с совпадающей параметризацией если в результате *coincParams = true, у проекции параметризация совпадает с параметрицацией исходной кривой. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Построить плоскую проекцию пространственной кривой на плоскость.
Построить плоскую проекцию пространственной кривой на плоскость.
[in] | place | - Плоскость. |
[in] | version | - Версия математики. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Дать физический радиус кривой или ноль, если это невозможно.
В общем случае на запрос радиуса возвращается 0. Число, отличное от 0, можно получить лишь в том случае, если кривая является дугой окружности или эквивалентна дуге окружности.
Переопределяет метод предка MbCurve3D.
|
virtual |
Дать плоскую кривую и плейсмент, если пространственная кривая плоская.
Дать плоскую кривую и плейсмент, если пространственная кривая плоская (после использования вызывать DeleteItem на двумерную кривую).
[out] | curve2d | - Полученная плоская кривая. |
[out] | place | - Система координат полученной двумерной кривой. |
[in] | saveParams | - Параметр, задающий сохранение соответствия параметризации у двумерной кривой. Если true - параметризация кривой curve2d должна соответствовать параметризациии исходной кривой this. Если false - параметризации кривых могут не соответствовать. Кривая curve2d может быть найдена с больший вероятностью, чем если бы saveParams = true. |
[in] | params | - Параметры проверки. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Построить полигональную копию mesh.
Построить полигональную копию данного объекта, представленную полигонами, или/и плоскими пластинами.
[in] | stepData | - Данные для вычисления шага при построении полигонального. |
[in] | note | - Способ построения полигонального объекта. |
[in,out] | mesh | - Построенный полигональный объект. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Выдать свойства объекта.
Выдать внутренние данные (свойства) объекта для их просмотра и модификации.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbCurve3D.
|
virtual |
Изменить свойства объекта.
Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbCurve3D.
|
virtual |
Непрерывна ли первая производная кривой по длине и направлению? Отсутствуют ли разрывы производной по длине и направлению в стыках сегментов контура?
.
[out] | contLength | - Непрерывность длины (да/нет). |
[out] | contDirect | - Непрерывность направления (да/нет). |
[out] | params | - Параметры точек, в которых происходит разрыв направления. |
[in] | epsilon | - Погрешность вычисления. |
Переопределяет метод предка MbCurve3D.
|
virtual |
Устранить разрывы производных по длине в стыках сегментов. Устранить разрывы производных по длине в стыках сегментов.
.
[in] | epsilon | - Погрешность вычисления. |
[in] | version | - Версия математики. |
Переопределяет метод предка MbCurve3D.
ptrdiff_t MbContour3D::FindSegment | ( | double & | t, |
double & | tSeg | ||
) | const |
Найти сегмент контура.
Найти сегмент контура по параметру контура.
[in,out] | t | - Параметр контура. |
[out] | tSeg | - Параметр сегмента контура. |
Добавить (усеченную) копию сегмента в конец контура.
Добавить (усеченную) копию сегмента в конец контура.
[in] | pBasis- | Исходная кривая. |
[in] | t1 | - Начальный параметр усечения. |
[in] | t2 | - Конечный параметр усечения. |
[in] | sense | - Направление усеченной кривой относительно исходной. sense = 1 - направление кривой сохраняется. sense = -1 - направление кривой меняется на обратное. |
bool MbContour3D::AddCurveWithRuledCheck | ( | MbCurve3D & | curve, |
double | absEps, | ||
bool | toEndOnly = false , |
||
bool | checkSame = true , |
||
VERSION | version = Math::DefaultMathVersion() |
||
) |
Добавить новый элемент в начало или конец контура.
Добавить новый элемент в начало или конец контура.
[in] | curve | - Добавляемая кривая. |
[in] | absEps | - Точность проверки совпадения концов кривых (1e-8 - 1e-4). |
[in] | toEndOnly | - Добавлять кривую только в конец контура. |
[in] | checkSame | - Проверять наличие такой же (добавляемой) кривой в контуре. |
[in] | checkSame | - Версия. |
void MbContour3D::GetSegmentsNames | ( | SimpleNameArray & | names | ) | const |
Дать имена сегментов.
Дать имена сегментов контура.
[out] | names | - Имена сегментов. |
void MbContour3D::SetSegmentsNames | ( | const SimpleNameArray & | names | ) |
Установить имена сегментов.
Установить имена сегментов контура по массиву имен.
[in] | names | - Набор имен. |