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

Поверхность сопряжения. Подробнее...

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

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

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

 VISITING_CLASS (MbSmoothSurface)
Функции инициализации
virtual void Init0 (double tmin, double tmax)=0
 Коррекция средней линии поверхности скругления.
Общие функции геометрического объекта
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 GetProperties (MbProperties &properties)=0
 Выдать свойства объекта.
virtual void SetProperties (const MbProperties &properties)=0
 Изменить свойства объекта.
Функции описания области определения поверхности
virtual double GetUMin () const
 Вернуть минимальное значение параметра u.
virtual double GetUMax () const
 Вернуть максимальное значение параметра u.
virtual double GetVMin () const
 Вернуть минимальное значение параметра v.
virtual double GetVMax () const
 Вернуть максимальное значение параметра v.
virtual bool IsUClosed () const
 Определить, замкнута ли поверхность по параметру u.
virtual bool IsVClosed () const
 Определить, замкнута ли поверхность по параметру v.
virtual double GetUPeriod () const
 Вернуть период для гладко замкнутой поверхности или 0.
virtual bool GetPoleUMin () const
 Существует ли полюс на границе параметрической области.
virtual bool GetPoleUMax () const
 Существует ли полюс на границе параметрической области.
virtual bool GetPoleVMin () const
 Существует ли полюс на границе параметрической области.
virtual bool GetPoleVMax () const
 Существует ли полюс на границе параметрической области.
virtual bool IsPole (double u, double v) const
 Является ли точка полюсом.
Функции для работы в области определения поверхности

Функции PointOn и Derive... поверхностей сопряжения не корректируют первый параметр при его выходе за пределы определения параметров.

virtual void PointOn (double &u, double &v, MbCartPoint3D &) const =0
 Вычислить точку на поверхности.
virtual void DeriveU (double &u, double &v, MbVector3D &) const =0
 Вычислить первую производную по u.
virtual void DeriveV (double &u, double &v, MbVector3D &) const =0
 Вычислить первую производную по v.
virtual void DeriveUU (double &u, double &v, MbVector3D &) const =0
 Вычислить вторую производную по u.
virtual void DeriveVV (double &u, double &v, MbVector3D &) const =0
 Вычислить вторую производную по v.
virtual void DeriveUV (double &u, double &v, MbVector3D &) const =0
 Вычислить вторую производную.
virtual void DeriveUUU (double &u, double &v, MbVector3D &) const =0
 Вычислить третью производную.
virtual void DeriveUUV (double &u, double &v, MbVector3D &) const =0
 Вычислить третью производную.
virtual void DeriveUVV (double &u, double &v, MbVector3D &) const =0
 Вычислить третью производную.
virtual void DeriveVVV (double &u, double &v, MbVector3D &) const =0
 Вычислить третью производную.
Функции доступа к группе данных для работы внутри и вне области определения параметров поверхности.
virtual void Explore (double &u, double &v, bool ext, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D *uuDer, MbVector3D *vvDer, MbVector3D *uvDer, MbVector3D *nor) const =0
 Вычислить значения точки и производных для заданных параметров.
Функции движения по поверхности
virtual size_t GetUCount () const
 Количество разбиений по параметру u для проверки событий.
virtual size_t GetVCount () const
 Количество разбиений по параметру v для проверки событий.
Общие функции поверхности
virtual MbeNewtonResult CurveIntersectNewton (const MbCurve3D &, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const
 Решение системы уравнений для определения пересечения поверхности и кривой. Для внутреннего использования.
virtual double GetParamDelta () const
 Дать максимальное приращение параметра.
virtual double GetParamPrice () const
 Дать минимально различимую величину параметра.
virtual MbSurfaceNurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) const
 Построить NURBS копию поверхности.
Функции поверхности сопряжения
virtual MbSmoothSurfaceCurvesDuplicate () const =0
 Копия с теми же опорными поверхностям.
MbSurfaceTotalDuplicate () const
 Сделать полное копирование поверхности.
virtual double GetSmoothRadius () const =0
 Дать радиус.
virtual void GetDistances (double u, double &d1, double &d2) const =0
 Дать радиусы со знаком.
virtual double GetDistance (bool s) const =0
 Дать радиус со знаком.
virtual bool SurfacesCombine (const MbSurfaceIntersectionCurve &edge, const MbSurface &init, bool add, MbMatrix &matr, const MbSurfaceIntersectionCurve *seam)
 Объединить поверхности путём включения поверхности init в данную поверхность.
virtual double DistanceRatio (bool firstCurve, MbCartPoint3D &p, double distance) const
 Дать коэффициент для радиуса.
const MbSurfaceCurveGetCurve1 () const
 Опорная кривая на первой поверхности.
const MbSurfaceCurveGetCurve2 () const
 Опорная кривая на второй поверхности.
MbSurfaceCurveSetCurve1 () const
 Дать опорную кривую на первой поверхности для изменения.
MbSurfaceCurveSetCurve2 () const
 Дать опорную кривую на второй поверхности для изменения.
MbCurveCreateBound (bool s) const
 Построить граничную кривую вдоль поверхности (V = const).
MbeCurveBuildType GetBuildType () const
 Вид опорных кривых.
MbeSmoothForm Form () const
 Форма поверхности.
virtual bool InsertPoints (double &t1, const MbCartPoint &p1, bool add1, double &t2, const MbCartPoint &p2, bool add2)
 Добавить точку в опорные кривые границы.
bool ProlongSurface (double u, const MbCartPoint &p1, const MbCartPoint &p2, const double buildSag=Math::deviateSag)
 Продлить поверхность.
bool CurveStraighten (double t1, double t2)
 Скорректировать кривые.
void AddProperties (MbProperties &properties)
 Дать свойства объекта.
void SetPole ()
 Проверить полюса.

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

 MbSmoothSurface (MbSurfaceCurve &crv1, MbSurfaceCurve &crv2, MbeSmoothForm fm, double d1, double d2)
 Конструктор по двум кривым и типу сопряжения.
 MbSmoothSurface (MbSurface &surf1, MbCurve &curv1, MbSurface &surf2, MbCurve &curv2, MbeSmoothForm fm, double d1, double d2)
 Конструктор по двум кривым и типу сопряжения.
 MbSmoothSurface (const MbSmoothSurface &, MbRegDuplicate *)
 Конструктор копирования.
 MbSmoothSurface (const MbSmoothSurface *)
 Конструктор копирования с теми же опорными поверхностями.
void CheckParam (double &u, double &v) const
 Корректировка параметров.
void InitSmoothSurface (const MbSmoothSurface &)
void Init (const MbSmoothSurface &)

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

MbSurfaceCurvecurve1
 Опорная кривая на первой поверхности (всегда не NULL).
MbSurfaceCurvecurve2
 Опорная кривая на второй поверхности (всегда не NULL).
MbeSmoothForm form
 Тип сопряжения.
double distance1
 Радиус скругления или "катет" фаски со знаком для поверхности кривой curve1.
double distance2
 Радиус скругления или "катет" фаски со знаком для поверхности кривой curve2.
double umin
 Минимальное значение параметра u.
double umax
 Максимальное значение параметра u.
double vmin
 Минимальное значение параметра v.
double vmax
 Максимальное значение параметра v.
bool uclosed
 Признак замкнутости по параметру u.
bool poleMin
 Наличие полюса при umin.
bool poleMax
 Наличие полюса при umax.

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

Поверхность сопряжения соединяет две кривые curve1 и curve2 на сопрягаемых поверхностях. Поверхность сопряжения является родительским классом поверхности скругления MbFilletSurface и поверхности фаски MbCamferSurface. В отличие от других поверхностей Функции PointOn и Derive... поверхностей сопряжения не корректируют первый параметр (u) при его выходе за пределы определения параметров (umin umax).


Конструктор(ы)

MbSmoothSurface::MbSmoothSurface ( MbSurfaceCurve crv1,
MbSurfaceCurve crv2,
MbeSmoothForm  fm,
double  d1,
double  d2 
) [protected]

Конструктор по двум кривым и типу сопряжения.

Аргументы:
[in]crv1- Опорная кривая на первой поверхности
[in]crv2- Опорная кривая на второй поверхности
[in]fm- Тип сопряжения (0 - скругление, 1 - фаска)
MbSmoothSurface::MbSmoothSurface ( MbSurface surf1,
MbCurve curv1,
MbSurface surf2,
MbCurve curv2,
MbeSmoothForm  fm,
double  d1,
double  d2 
) [protected]

Конструктор по двум кривым и типу сопряжения.

Аргументы:
[in]surf1- Первая поверхность
[in]curv1- Кривая в области определения первой поверхности
[in]surf2- Вторая поверхность
[in]curv2- Кривая в области определения второй поверхности
[in]fm- Тип сопряжения (0 - скругление, 1 - фаска)

Методы

virtual void MbSmoothSurface::Init0 ( double  tmin,
double  tmax 
) [pure virtual]

Коррекция средней линии поверхности скругления.

Аргументы:
[in]tmin- Новый минимальный параметр средней линии
[in]tmax- Новый максимальный параметр средней линии

Замещается в MbChamferSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface, MbChannelSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface, MbChannelSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface, MbChannelSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface, MbChannelSurface и MbFilletSurface.

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

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

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

Замещает MbSurface.

Замещается в MbChamferSurface и MbFilletSurface.

virtual bool MbSmoothSurface::IsUClosed ( ) const [virtual]

Определить, замкнута ли гладко поверхность по u-параметру без учета граничного контура. Всегда false для MbCurveBoundSurface. Рекомендуется использовать IsUPeriodic.

Замещает MbSurface.

virtual bool MbSmoothSurface::IsVClosed ( ) const [virtual]

Определить, замкнута ли гладко поверхность по v-параметру без учета граничного контура. Всегда false для MbCurveBoundSurface. Рекомендуется использовать IsVPeriodic.

Замещает MbSurface.

virtual void MbSmoothSurface::PointOn ( double &  u,
double &  v,
MbCartPoint3D p 
) const [pure virtual]

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

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

Замещает MbSurface.

Замещается в MbChamferSurface и MbFilletSurface.

virtual void MbSmoothSurface::Explore ( double &  u,
double &  v,
bool  ext,
MbCartPoint3D pnt,
MbVector3D uDer,
MbVector3D vDer,
MbVector3D uuDer,
MbVector3D vvDer,
MbVector3D uvDer,
MbVector3D nor 
) const [pure virtual]

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

Аргументы:
[in]u- Параметр.
[in]v- Параметр.
[in]ext- В пределах области определения (false), на расширенной поверхности (true).
[out]pnt- Точка.
[out]uDer- Производная по u.
[out]vDer- Производная по v.
[out]uuDer- Вторая производная по u, если не ноль.
[out]vvDer- Вторая производная по v, если не ноль.
[out]uvDer- Вторая производная по u и по v, если не ноль.

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

Замещается в MbChamferSurface и MbFilletSurface.

virtual MbSurface* MbSmoothSurface::NurbsSurface ( const MbNurbsParameters uParam,
const MbNurbsParameters vParam 
) const [virtual]

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

Аргументы:
[in]uParam- Параметры построения по направлению u.
[in]vParam- Параметры построения по направлению v.
Возвращает:
Построенная NURBS поверхность или NULL при неуспешном построении.

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

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

virtual bool MbSmoothSurface::SurfacesCombine ( const MbSurfaceIntersectionCurve edge,
const MbSurface init,
bool  add,
MbMatrix matr,
const MbSurfaceIntersectionCurve seam 
) [virtual]

Объединить поверхности путём включения поверхности init в данную поверхность.

Аргументы:
[in]edge- Кривая разделяющего ребра
[in]init- Поверхность, которую нужно добавить в данную
[in]add- Добавить в конец (true), добавить в начало (false)
[in]matr- Матрица преобразования объектов с init в данную поверхность,
[in]seam- Кривая другого разделяющего ребра (может быть NULL)

Переопределяется в MbChamferSurface и MbFilletSurface.

MbCurve* MbSmoothSurface::CreateBound ( bool  s) const

Построить граничную кривую вдоль поверхности (V = const).

Аргументы:
[in]s- Если true, то вдоль минимального значения V,
если false, то вдоль максимального значения V
MbeCurveBuildType MbSmoothSurface::GetBuildType ( ) const

Вид опорных кривых.

Возвращает:
cbt_Specific если кривые построены по отдельным точкам
cbt_Ordinary если кривые аналитические
MbeSmoothForm MbSmoothSurface::Form ( ) const [inline]

Форма поверхности.

Возвращает:
0 в случае поверхности скругления
1 в случае поверхности фаски
virtual bool MbSmoothSurface::InsertPoints ( double &  t1,
const MbCartPoint p1,
bool  add1,
double &  t2,
const MbCartPoint p2,
bool  add2 
) [virtual]

Добавить точку в опорные кривые границы.
Точка будет добавлена в кривую, если она имеет тип pt_LineSegment, pt_CubicSpline или pt_Hermit.

Аргументы:
[out]t1- Параметр точки на первой кривой (если add1 = true)
[in]p1- Точка на первой кривой
[in]add1- Нужно ли добавлять точку в первую кривую
[out]t2- Параметр точки на второй кривой (если add2 = true)
[in]p2- Точка на второй кривой
[in]add2- Нужно ли добавлять точку во вторую кривую

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

bool MbSmoothSurface::ProlongSurface ( double  u,
const MbCartPoint p1,
const MbCartPoint p2,
const double  buildSag = Math::deviateSag 
)

Построить и добавить точки в опорные кривые до или после границы, удлиннив поверхность.
Точки будут построены и добавлены в кривые, если они имеют тип pt_Hermit.

Аргументы:
[in]t- Первый параметр поверхности
[in]p1- Точка на первой кривой
[in]p2- Точка на второй кривой
[in]buildSag- Шаг построения
bool MbSmoothSurface::CurveStraighten ( double  t1,
double  t2 
)

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

Аргументы:
[in]t1- Параметр точки на первой опорной кривой.
[in]t2- Параметр точки на второй опорной кривой.

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