C3D Kernel  104065
Открытые члены | Защищенные члены | Защищенные данные
Класс MbPolyCurve3D

Кривая в трехмерном пространстве, заданная точками. Подробнее...

Граф наследования:MbPolyCurve3D:
Inheritance graph
[см. легенду]
Граф связей класса MbPolyCurve3D:
Collaboration graph
[см. легенду]

Полный список членов класса

Открытые члены

 VISITING_CLASS (MbPolyCurve3D)
virtual MbeSpaceType IsA () const =0
 Получить тип объекта.
virtual MbeSpaceType Type () const
 Получить групповой тип объекта.
virtual MbSpaceItemDuplicate (MbRegDuplicate *=NULL) const =0
 Создать копию объекта.
virtual bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const =0
 Определить, являются ли объекты равными.
virtual bool SetEqual (const MbSpaceItem &)=0
 Сделать объекты равным, если они подобны.
virtual void Transform (const MbMatrix3D &, MbRegTransform *=NULL)=0
 Преобразовать объект согласно матрице.
virtual void Move (const MbVector3D &, MbRegTransform *=NULL)=0
 Сдвинуть объект вдоль вектора.
virtual void Rotate (const MbAxis3D &, double angle, MbRegTransform *=NULL)=0
 Повернуть объект вокруг оси на заданный угол.
virtual void AddYourGabaritTo (MbCube &) const
 Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
virtual void PrepareIntegralData (const bool forced) const
 Рассчитать временные (mutable) данные объекта.
virtual void GetProperties (MbProperties &properties)=0
 Выдать свойства объекта.
virtual void SetProperties (const MbProperties &properties)=0
 Изменить свойства объекта.
virtual void GetBasisItems (RPArray< MbSpaceItem > &)
 Выдать базовые объекты в присланный контейнер.
virtual void GetBasisPoints (MbControlData3D &) const
 Выдать контрольные точки объекта.
virtual void SetBasisPoints (const MbControlData3D &)
 Изменить объект по контрольным точкам.
virtual void Refresh ()
 Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние.
virtual void PointOn (double &t, MbCartPoint3D &) const =0
 Вычислить точку на кривой.
virtual void FirstDer (double &t, MbVector3D &) const =0
 Вычислить первую производную.
virtual void SecondDer (double &t, MbVector3D &) const =0
 Вычислить вторую производную.
virtual void ThirdDer (double &t, MbVector3D &) const =0
 Вычислить третью производную.
virtual void Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const =0
 Вычислить значения точки и производных для заданного параметра.
virtual MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo &) const =0
 Построить NURBS копию кривой.
virtual MbCurve3DTrimmBreak (double t1, double t2, int sense) const =0
virtual double GetTMax () const =0
 Вернуть максимальное значение параметра.
virtual double GetTMin () const =0
 Вернуть минимальное значение параметра.
virtual bool IsClosed () const
 Определить, является ли кривая замкнутой.
virtual void Inverse (MbRegTransform *iReg=NULL)=0
 Изменить направление кривой.
virtual double GetMetricLength () const
 Вычислить метрическую длину кривой.
virtual double GetLengthEvaluation () const
 Вычислить метрическую длину кривой.
virtual bool IsPlanar () const
 Является ли кривая плоской?
virtual bool GetPlacement (MbPlacement3D &place, VERSION version=Math::DefaultMathVersion()) const
 Заполнить плейсемент, если кривая плоская.
virtual bool GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place, bool saveParams, VERSION version=Math::DefaultMathVersion()) const =0
 Дать плоскую кривую и плейсмент, если пространственная кривая плоская (после использования вызывать DeleteItem на двумерную кривую).
virtual void Rebuild ()=0
virtual void SetClosed (bool cls)
virtual ptrdiff_t GetNearPointIndex (const MbCartPoint3D &) const
virtual void AddPoint (const MbCartPoint3D &)
virtual void InsertPoint (ptrdiff_t index, const MbCartPoint3D &)=0
virtual void InsertPoint (double t, const MbCartPoint3D &, double)=0
virtual void RemovePoint (ptrdiff_t index)
virtual void RemovePoints ()
virtual bool ChangePoint (ptrdiff_t index, const MbCartPoint3D &)
virtual void GetPoint (ptrdiff_t index, MbCartPoint3D &) const
virtual size_t GetPointsCount () const
virtual void GetRuleInterval (ptrdiff_t index, double &t1, double &t2) const =0
void GetLineSegments (RPArray< MbCurve3D > &segments) const
virtual bool CheckParam (double &t, ptrdiff_t &i0, ptrdiff_t &i1, double &t0, double &t1) const =0
virtual double GetParam (ptrdiff_t i) const =0
virtual size_t GetCount () const
 Определить количество разбиений для прохода в операциях.
virtual bool IsPointsPeriodic (ptrdiff_t &begPointNumber, ptrdiff_t &endPointNumber, ptrdiff_t &period) const
const MbCubeGetGabarit () const
size_t GetPointListCount () const
ptrdiff_t GetPointListMaxIndex () const
void GetPointList (SArray< MbCartPoint3D > &pnts) const
const MbCartPoint3DGetPointList (size_t i) const
MbCartPoint3DSetPointList (size_t i)
ptrdiff_t GetUppIndex () const
size_t GetSegmentsCount () const
bool NurbsParam (double epsilon, double &pmin, double &pmax, ptrdiff_t &i1, double &t1, ptrdiff_t &i2, double &t2) const

Защищенные члены

 MbPolyCurve3D (const MbPolyCurve3D &)
bool CompositeDistanceAlong (double &t, double len, int curveDir, double eps, const SArray< double > &tList) const
double SegmentCalculateLength (double w1, double w2, size_t n, double *x, double *w) const
bool SegmentDistanceAlong (double &t1, double ln, int curveDir, double eps, double stepMax, size_t n, double *x, double *w) const

Защищенные данные

ptrdiff_t uppIndex
 Количество участков кривой (равно количество контрольных точек минус единица).
SArray< MbCartPoint3DpointList
 Множество контрольных точек.
bool closed
 Признак замкнутости кривой.
double metricLength
 Метрическая длина кривой.
double lengthEvaluation
 Оценочная длина кривой.
MbCube cube
 Габаритный куб кривой.

Подробное описание

Родительский класс кривых в трехмерном пространстве, заданных контрольными точками: MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D, MbPolyline3D.


Методы

virtual MbSpaceItem& MbPolyCurve3D::Duplicate ( MbRegDuplicate iReg = NULL) const [pure virtual]

Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.

Аргументы:
[in]iReg- Регистратор.
Возвращает:
Копия объекта.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual bool MbPolyCurve3D::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const [pure virtual]

Равными считаются однотипные объекты, все данные которых одинаковы (равны).

Аргументы:
[in]item- Объект для сравнения.
[in]accuracy- Точность сравнения.
Возвращает:
Равны ли объекты.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual bool MbPolyCurve3D::SetEqual ( const MbSpaceItem item) [pure virtual]

Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.

Аргументы:
[in]item- Объект для инициализации.
Возвращает:
Сделан ли объект равным присланному.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = NULL 
) [pure virtual]

Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.

Аргументы:
[in]matr- Матрица преобразования.
[in]iReg- Регистратор.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::Move ( const MbVector3D to,
MbRegTransform iReg = NULL 
) [pure virtual]

Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.

Аргументы:
[in]to- Вектор сдвига.
[in]iReg- Регистратор.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = NULL 
) [pure virtual]

Повернуть объект вокруг оси на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.

Аргументы:
[in]axis- Ось поворота.
[in]angle- Угол поворота.
[in]iReg- Регистратор.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::AddYourGabaritTo ( MbCube cube) const [virtual]

Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.

Аргументы:
[in,out]cube- Принимающий габаритный куб с информацией по габаритам.

Переопределяет метод предка MbCurve3D.

virtual void MbPolyCurve3D::PrepareIntegralData ( const bool  forced) const [virtual]

Рассчитать временные данные объекта в зависимости от параметра forced. Если параметр forced равен false, рассчитываются только ещё не насчитанные данные. Если параметр forced равен true, пересчитываются все временные данные объекта. Принудительный перерасчёт.

Переопределяет метод предка MbCurve3D.

virtual void MbPolyCurve3D::GetProperties ( MbProperties properties) [pure virtual]

Выдать внутренние данные (свойства) объекта для их просмотра и модификации.

Аргументы:
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::SetProperties ( const MbProperties properties) [pure virtual]

Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.

Аргументы:
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::PointOn ( double &  t,
MbCartPoint3D p 
) const [pure virtual]

Скорректировать параметры при выходе их за пределы области определения и вычислить точку на кривой.

Аргументы:
[in]t- Параметр curve.
[out]p- Вычисленная точка на кривой.

Замещает MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual void MbPolyCurve3D::Explore ( double &  t,
bool  ext,
MbCartPoint3D pnt,
MbVector3D fir,
MbVector3D sec,
MbVector3D thir 
) const [pure virtual]

Значения точки и производных вычисляются в пределах области определения и на расширенной кривой.

Аргументы:
[in]t- Параметр.
[in]ext- В пределах области определения (false), на расширенной кривой (true).
[out]pnt- Точка.
[out]fir- Производная.
[out]sec- Вторая производная по t, если не ноль.
[out]thir- Третья производная по t, если не ноль.

Переопределяет метод предка MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual MbNurbs3D* MbPolyCurve3D::NurbsCurve ( const MbCurveIntoNurbsInfo nInfo) const [pure virtual]

Строит NURBS кривую, аппроксимирующую заданную в диапазоне параметров [t1, t2] с заданным направлением. По возможности, строит точную кривую, возможно с кратными узлами. Количеством узлов для NURBS определяется в зависимости от кривой.

Аргументы:
[in]t1- Параметр, соответствующий началу аппроксимируемой части кривой.
[in]t2- Параметр, соответствующий концу аппроксимируемой части кривой.
[in]sense- Совпадает ли направление возрастания параметра вдоль NURBS кривой с направлением на исходной кривой. sense > 0 - направление совпадает.
[in]nInfo- Параметры преобразования кривой в NURBS.
Возвращает:
Построенная NURBS кривая или NULL при неуспешном построении.

Переопределяет метод предка MbCurve3D.

Замещается в MbBezier3D, MbCubicSpline3D, MbHermit3D, MbNurbs3D и MbPolyline3D.

virtual bool MbPolyCurve3D::IsClosed ( ) const [virtual]

Определить, является ли кривая замкнутой.
Замкнутой считается кривая, если она циклична:

  • начальная и конечная точка кривой совпадают,
  • производные в начальной и конечной точке совпадают;
    если по своей природе кривая допускает изломы (контур, ломаная), то допускается не совпадение производных; у кривой Безье производные должны совпадать по направлению, но могут не совпадать по модулю.
Возвращает:
true, если кривая замкнута.

Замещает MbCurve3D.

Переопределяется в MbNurbs3D.

virtual double MbPolyCurve3D::GetLengthEvaluation ( ) const [virtual]

Длина кривой вычисляется неточно, на основе аппроксимации ломаной. Если нужна более точно вычисленная длина кривой, надо пользоваться функцией CalculateMetricLength().

Переопределяет метод предка MbCurve3D.


Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы