C3D Toolkit
Kernel - 112346, Vision - 2.6.2.8
|
Поверхность в трехмерном пространстве. Подробнее...
#include <surface.h>
Открытые члены | |
virtual | ~MbSurface () |
Деструктор. | |
VISITING_CLASS (MbSurface) | |
Реализация функции, инициирующей посещение объекта. | |
virtual MbeSpaceType | IsA () const =0 |
Получить тип объекта. | |
virtual MbeSpaceType | Type () const |
Получить групповой тип объекта. | |
virtual MbeSpaceType | Family () const |
Получить семейство объекта. | |
virtual MbSpaceItem & | Duplicate (MbRegDuplicate *=c3d_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 *=c3d_null)=0 |
Преобразовать объект согласно матрице. Подробнее... | |
virtual void | Move (const MbVector3D &, MbRegTransform *=c3d_null)=0 |
Сдвинуть объект вдоль вектора. Подробнее... | |
virtual void | Rotate (const MbAxis3D &, double angle, MbRegTransform *=c3d_null)=0 |
Повернуть объект вокруг оси на заданный угол. Подробнее... | |
virtual double | DistanceToPoint (const MbCartPoint3D &) const |
Определить расстояние до точки. Подробнее... | |
virtual void | AddYourGabaritTo (MbCube &c) const |
Расширить присланный габаритный куб так, чтобы он включал в себя данный объект. Подробнее... | |
virtual void | Refresh () |
Перевести все временные (mutable) данные объекта в неопределённое (исходное) состояние. | |
virtual void | PrepareIntegralData (const bool forced) const |
Рассчитать временные (mutable) данные объекта. Подробнее... | |
virtual void | CalculateMesh (const MbStepData &stepData, const MbFormNote ¬e, MbMesh &mesh) const |
Построить полигональную копию mesh. Подробнее... | |
virtual MbProperty & | CreateProperty (MbePrompt name) const |
Создать собственное свойство с заданием его имени. | |
virtual void | GetProperties (MbProperties &properties)=0 |
Выдать свойства объекта. Подробнее... | |
virtual void | SetProperties (const MbProperties &properties)=0 |
Изменить свойства объекта. Подробнее... | |
virtual void | GetBasisPoints (MbControlData3D &) const |
Выдать контрольные точки объекта. | |
virtual void | SetBasisPoints (const MbControlData3D &) |
Изменить объект по контрольным точкам. | |
size_t | size () const |
Количество объектов при трактовке объекта как вектора объектов. | |
const MbSurface * | operator[] (size_t) const |
Оператор доступа. | |
Функции описания области определения поверхности. | |
virtual double | GetUMin () const =0 |
Вернуть минимальное значение параметра u. | |
virtual double | GetVMin () const =0 |
Вернуть минимальное значение параметра v. | |
virtual double | GetUMax () const =0 |
Вернуть максимальное значение параметра u. | |
virtual double | GetVMax () const =0 |
Вернуть максимальное значение параметра v. | |
virtual bool | IsUClosed () const =0 |
Определить, замкнута ли поверхность по параметру u. Подробнее... | |
virtual bool | IsVClosed () const =0 |
Определить, замкнута ли поверхность по параметру v. Подробнее... | |
virtual bool | IsUTouch () const |
Определить, замкнута ли фактически поверхность по u-параметру независимо от гладкости замыкания. Подробнее... | |
virtual bool | IsVTouch () const |
Определить, замкнута ли фактически поверхность по v-параметру независимо от гладкости замыкания. Подробнее... | |
virtual bool | IsUPeriodic () const |
Определить, замкнута ли поверхность по параметру u. Подробнее... | |
virtual bool | IsVPeriodic () const |
Определить, замкнута ли поверхность по параметру v. Подробнее... | |
virtual double | GetUPeriod () const |
Вернуть период для гладко замкнутой поверхности или 0. | |
virtual double | GetVPeriod () const |
Вернуть период для гладко замкнутой поверхности или 0. | |
virtual double | GetPeriod (ptrdiff_t i) const |
Вернуть период. Подробнее... | |
virtual size_t | Periodicity () const |
Определить периодичность. Подробнее... | |
virtual bool | GetPoleUMin () const |
Существует ли полюс на границе параметрической области. | |
virtual bool | GetPoleUMax () const |
Существует ли полюс на границе параметрической области. | |
virtual bool | GetPoleVMin () const |
Существует ли полюс на границе параметрической области. | |
virtual bool | GetPoleVMax () const |
Существует ли полюс на границе параметрической области. | |
virtual bool | IsPole (double u, double v) const |
Является ли точка полюсом. | |
bool | IsPole (const MbCartPoint &uv) const |
Является ли точка полюсом. | |
Функции для работы в области определения поверхности | |
Функции PointOn, Derive... поверхностей корректируют параметры при выходе их за пределы прямоугольной области определения параметров.
| |
virtual void | PointOn (double &u, double &v, MbCartPoint3D &p) 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 | TangentU (double &u, double &v, MbVector3D &) const |
Вычислить касательный вектор по u. | |
virtual void | TangentV (double &u, double &v, MbVector3D &) const |
Вычислить касательный вектор по v. | |
virtual void | Normal (double &u, double &v, MbVector3D &) const |
Вычислить нормаль. | |
virtual void | NormalU (double &u, double &v, MbVector3D &) const |
Вычислить производную нормали по U. | |
virtual void | NormalV (double &u, double &v, MbVector3D &) const |
Вычислить производную нормали по V. | |
virtual void | Explore (double &u, double &v, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer) const |
Вычислить значения точки и первых производных по u и по v. Подробнее... | |
Функции для работы внутри и вне области определения поверхности | |
функции _PointOn, _Derive... поверхностей не корректируют параметры при выходе их за пределы прямоугольной области определения параметров. | |
virtual void | _PointOn (double u, double v, MbCartPoint3D &p) const |
Вычислить точку на поверхности. Подробнее... | |
virtual void | _DeriveU (double u, double v, MbVector3D &) const |
Вычислить первую производную по u на расширенной поверхности. | |
virtual void | _DeriveV (double u, double v, MbVector3D &) const |
Вычислить первую производную по v на расширенной поверхности. | |
virtual void | _DeriveUU (double u, double v, MbVector3D &) const |
Вычислить вторую производную по u на расширенной поверхности. | |
virtual void | _DeriveVV (double u, double v, MbVector3D &) const |
Вычислить вторую производную по v на расширенной поверхности. | |
virtual void | _DeriveUV (double u, double v, MbVector3D &) const |
Вычислить вторую производную на расширенной поверхности. | |
virtual void | _DeriveUUU (double u, double v, MbVector3D &) const |
Вычислить третью производную на расширенной поверхности. | |
virtual void | _DeriveUUV (double u, double v, MbVector3D &) const |
Вычислить третью производную на расширенной поверхности. | |
virtual void | _DeriveUVV (double u, double v, MbVector3D &) const |
Вычислить третью производную на расширенной поверхности. | |
virtual void | _DeriveVVV (double u, double v, MbVector3D &) const |
Вычислить третью производную на расширенной поверхности. | |
virtual void | _TangentU (double u, double v, MbVector3D &) const |
Вычислить касательный вектор по u на расширенной поверхности. | |
virtual void | _TangentV (double u, double v, MbVector3D &) const |
Вычислить касательный вектор по v на расширенной поверхности. | |
virtual void | _Normal (double u, double v, MbVector3D &) const |
Вычислить нормаль на расширенной поверхности. | |
virtual void | _NormalU (double u, double v, MbVector3D &) const |
Вычислить производную нормали на расширенной поверхности. | |
virtual void | _NormalV (double u, double v, MbVector3D &) const |
Вычислить производную нормали на расширенной поверхности. | |
virtual void | _NormalUU (double u, double v, MbVector3D &) const |
Вычислить вторую производную нормали на расширенной поверхности. | |
virtual void | _NormalUV (double u, double v, MbVector3D &) const |
Вычислить вторую производную нормали на расширенной поверхности. | |
virtual void | _NormalVV (double u, double v, MbVector3D &) const |
Вычислить вторую производную нормали на расширенной поверхности. | |
virtual void | _NormalD (double u, double v, double du, double dv, MbVector3D &der) const |
Вычислить производную нормали в точке с параметрами u v вдоль линии du dv. | |
virtual void | _NormalDD (double u, double v, double du, double dv, MbVector3D &der) const |
Вычислить вторую производную нормали в точке с параметрами u v вдоль линии du dv. | |
virtual void | Explore (double &u, double &v, bool ext, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D *uuDer, MbVector3D *vvDer, MbVector3D *uvDer, MbVector3D *nor) const |
Вычислить значения точки и производных для заданных параметров. Подробнее... | |
virtual void | _PointNormal (double u, double v, MbCartPoint3D &pnt, MbVector3D &deru, MbVector3D &derv, MbVector3D &norm, MbVector3D &noru, MbVector3D &norv, MbVector3D &deruu, MbVector3D &dervv, MbVector3D &deruv) const |
Вычислить значения всех производных в точке. Подробнее... | |
Функции движения по поверхности | |
virtual double | StepU (double u, double v, double sag) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | StepV (double u, double v, double sag) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | DeviationStepU (double u, double v, double angle) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | DeviationStepV (double u, double v, double angle) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | MetricStepU (double u, double v, double length) const |
Вычислить шаг параметра. Подробнее... | |
virtual double | MetricStepV (double u, double v, double length) const |
Вычислить шаг параметра. Подробнее... | |
double | SurfaceStep (const double &u, const double &v, bool alongU, const MbStepData &stepData) const |
Вычислить шаг параметра. Подробнее... | |
virtual size_t | GetUCount () const |
Количество разбиений по параметру u для проверки событий. | |
virtual size_t | GetVCount () const |
Количество разбиений по параметру v для проверки событий. | |
Общие функции поверхности | |
virtual const MbSurface & | GetSurface () const |
Дать себя (перегружена только у CurveBoundedSurface). | |
virtual const MbSurface & | GetBasisSurface () const |
Дать базовую поверхность, если есть, или себя. | |
virtual MbSurface & | SetSurface () |
Дать себя (перегружена только у CurveBoundedSurface). | |
virtual MbSurface & | SetBasisSurface () |
Дать базовую поверхность, если есть, или себя. | |
virtual void | GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const |
Вычислить граничную точку. Подробнее... | |
virtual void | GetLimitPoint (ptrdiff_t number, MbCartPoint &pnt) const |
Вычислить двумерную граничную точку. Подробнее... | |
MbCartPoint3D | GetLimitPoint (ptrdiff_t number) const |
Вычислить граничную точку. Подробнее... | |
virtual double | CurvatureU (double u, double v) const |
Вычислить кривизну линии вдоль u. Подробнее... | |
virtual double | CurvatureV (double u, double v) const |
Вычислить кривизну линии вдоль v. Подробнее... | |
double | NormalCurvatureU (double u, double v) const |
Вычислить нормальную кривизну линии вдоль u. Подробнее... | |
double | NormalCurvatureV (double u, double v) const |
Вычислить нормальную кривизну линии вдоль v. Подробнее... | |
double | NormalCurvature (double u, double v, double du, double dv) const |
Вычислить нормальную кривизну поверхности. Подробнее... | |
bool | MeanGaussCurvature (double u, double v, double &mean, double &gauss) const |
Вычислить Среднюю и Гауссову кривизну. Подробнее... | |
virtual bool | IsSameBase (const MbSurface &) const |
Является ли базовая поверхность копией базовой поверхности данного объекта. | |
virtual bool | IsPlanar (double accuracy=METRIC_EPSILON) const |
Является ли поверхность плоской. | |
virtual double | GetRadius () const |
Дать физический радиус объекта или ноль, если это невозможно. Подробнее... | |
virtual double | GetFilletRadius (const MbCartPoint3D &p) const |
Дать радиус скругления, если поверхность является поверхностью скругления. | |
virtual MbeParamDir | GetFilletDirection () const |
Направление поверхности скругления. | |
virtual bool | GetCylinderAxis (MbAxis3D &) const |
Дать ось вращения для поверхности. | |
virtual bool | GetCentre (MbCartPoint3D &c) const |
Выдать центр сферической поверхности. | |
virtual bool | GetCenterLines (std::vector< MbCurve3D *> &clCurves) const |
Дать осевые (центральные) линии для поверхности. | |
virtual void | ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init) |
Изменение носителя. Подробнее... | |
virtual bool | ChangeCarrierBorne (const MbSurface &item, MbSurface &init, const MbMatrix &matr) |
Изменение носимых элементов. Подробнее... | |
virtual bool | IsSpinePeriodic () const |
Периодичность направляющей. Подробнее... | |
MbSplineSurface * | NurbsSurface (bool bmatch=false) const |
Построить NURBS копию поверхности. Подробнее... | |
virtual MbSplineSurface * | NurbsSurface (double u1, double u2, double v1, double v2, bool bmatch=false) const |
Построить NURBS копию усеченной поверхности. Подробнее... | |
virtual MbSurface * | NurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) const |
Построить NURBS копию поверхности. Подробнее... | |
bool | NurbsParam (const MbNurbsParameters &tParam, bool uParam, double op1, double op2, bool &isClosedNurbs, double &epsilon, SArray< double > ¶ms) const |
Подготовить параметры для преобразования в NURBS поверхность. Подробнее... | |
void | CheckApproxPointParamsOpen (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const |
Выбрать точки для аппроксимации вдоль параметра. Подробнее... | |
void | CheckApproxPointParamsClosed (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const |
Выбрать точки для аппроксимации вдоль параметра. Подробнее... | |
virtual MbSurface * | Offset (double d, bool same) const |
Построить эквидистантую поверхность. Подробнее... | |
virtual MbCurve3D * | CurveU (double v, MbRect1D *pRgn, bool bApprox=true) const |
Построить пространственную копию линии v = const. Подробнее... | |
virtual MbCurve3D * | CurveV (double u, MbRect1D *pRgn, bool bApprox=true) const |
Построить пространственную копию линии u = const. Подробнее... | |
virtual MbCurve3D * | CurveUV (const MbLineSegment &segm, bool bApprox=true) const |
Построить пространственную копию линии по параметрической линии. Подробнее... | |
virtual MbeItemLocation | PointRelative (const MbCartPoint3D &pnt, double eps=ANGLE_REGION) const |
Определить, с какой стороны от поверхности находится точка. Подробнее... | |
virtual MbeItemLocation | PointClassification (const MbCartPoint &pnt, bool ignoreClosed=false) const |
Находятся ли точка в области, принадлежащей поверхности. Подробнее... | |
virtual double | DistanceToBorder (const MbCartPoint &point, double &epsilon) const |
Вычислить параметрическое расстояние до ближайшей границы. Подробнее... | |
virtual size_t | CurveClassification (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const |
Определить точки пересечения кривoй с контурами поверхности. Подробнее... | |
size_t | SurfaceBorderIntersection (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const |
Определить точки пересечения кривoй с контурами поверхности. Подробнее... | |
virtual MbeNewtonResult | PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &u, double &v, bool ext) const |
Нахождение проекции точки на поверхность. Для внутреннего использования. | |
virtual bool | NearPointProjection (const MbCartPoint3D &pnt, double &u, double &v, bool ext, MbRect2D *uvRange=c3d_null) const |
Найти проекцию точки на поверхность. Подробнее... | |
virtual MbeNewtonResult | DirectPointProjectionNewton (const MbCartPoint3D &p, const MbVector3D &vect, size_t iterLimit, double &u, double &v, double &w, bool ext) const |
Нахождение проекции точки на поверхность в направлении вектора. Для внутреннего использования. | |
virtual void | DirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, SArray< MbCartPoint > &uv, bool ext, MbRect2D *uvRange=c3d_null) const |
Найти все проекции точки на поверхность вдоль вектора в любом из двух направлений. Подробнее... | |
virtual bool | NearDirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, double &u, double &v, bool ext, MbRect2D *uvRange=c3d_null, bool onlyPositiveDirection=false) const |
Найти ближайшую проекцию точки на поверхность в направлении вектора. Подробнее... | |
virtual MbeNewtonResult | CurveIntersectNewton (const MbCurve3D &curv1, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const |
Решение системы уравнений для определения пересечения поверхности и кривой. Для внутреннего использования. | |
virtual MbeNewtonResult | CurveTangentNewton (const MbCurve3D &curv1, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const |
Решение системы уравнений для определения касания поверхности и кривой. Для внутреннего использования. | |
virtual void | CurveIntersection (const MbCurve3D &curv, SArray< MbCartPoint > &uv, SArray< double > &tt, bool ext0, bool ext, bool touchInclude=false) const |
Определить точки пересечения поверхности и кривой. Подробнее... | |
virtual MbeNewtonResult | SurfaceIntersectNewton (const MbSurface &surf1, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const |
Решение системы уравнений для определения пересечения поверхностей. Для внутреннего использования. | |
virtual MbeNewtonResult | SurfaceTangentNewton (const MbSurface &surf1, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const |
Решение системы уравнений для определения касания поверхностей. Для внутреннего использования. | |
virtual MbeNewtonResult | SilhouetteNewton (const MbVector3D &eye, bool perspective, const MbAxis3D *axis, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u, double &v, bool ext) const |
Решение системы уравнений для определение точек очерка поверхности. Для внутреннего использования. | |
virtual bool | IsSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const |
Определить, подобны ли поверхности для объединения. Подробнее... | |
virtual bool | IsSpecialSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const |
Подобные ли поверхности для объединения (слива). Специальный случай. Для внутреннего использования. | |
virtual bool | ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, MbCurve *&curveNew) const |
Построение проекции поверхностной кривой на совпадающую поверхность. Подробнее... | |
bool | ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, SPtr< MbCurve > &curveNew) const |
Построение проекции поверхностной кривой на совпадающую поверхность. Подробнее... | |
virtual bool | GetMatrixToSurface (const MbSurface &surf, MbMatrix &matr, VERSION version, double precision=METRIC_PRECISION) const |
Дать двумерную матрицу преобразования из своей параметрической области в параметрическую область surf. Подробнее... | |
virtual ThreeStates | Salient () const |
Определить, выпуклая ли поверхность. | |
virtual double | DistanceToCurve (const MbCurve3D &curve, double &u, double &v, double &t, bool tCalc=false) const |
Вычислить ближайшее расстояние до кривой. Подробнее... | |
virtual double | DistanceToSurface (const MbSurface &surf1, double &u0, double &v0, double &u1, double &v1) const |
Вычислить ближайшее расстояние до поверхности. Подробнее... | |
virtual bool | CreateNormalPlacements (const MbVector3D &axisZ, double angle, SArray< MbPlacement3D > &places) const |
Построить нормальные плейсменты конструктивных плоскостей. | |
virtual bool | CreateTangentPlacements (const MbVector3D &axisZ, SArray< MbPlacement3D > &places) const |
Построить касательные плейсменты конструктивных плоскостей. | |
MbeNewtonResult | PlacementNewton (const MbVector3D &vec, double angle, MbeParamDir switchPar, size_t iterLimit, double &u, double &v) const |
Построить касательные плейсменты конструктивных плоскостей. Для внутреннего использования. | |
bool | CreateVconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const |
Построить нормальные или касательные плейсменты на v-линиях. | |
bool | CreateUconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const |
Построить нормальные или касательные плейсменты на u-линиях. | |
virtual double | ParamArea () const |
Вычислить площадь области определения параметров. | |
virtual size_t | GetUPairs (double v, SArray< double > &u) const |
Вычислить U-пары от V. Подробнее... | |
virtual size_t | GetVPairs (double u, SArray< double > &v) const |
Вычислить V-пары от U. Подробнее... | |
MbeNewtonResult | IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &u, double &v) const |
Определение параметров точки изоклины поверхности. Для внутреннего использования. | |
virtual void | GetIsoclinal (const MbVector3D &nor, SArray< MbCartPoint > &uv) const |
Найти все изоклины поверхности. Подробнее... | |
virtual void | CalculateGabarit (MbCube &cube) const |
Рассчитать габарит поверхности. Рекомендуется использовать GetGabarit. | |
virtual void | CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const |
Рассчитать габарит в локальной системе координат. | |
const MbCube & | GetGabarit () const |
Рассчитать габаритный куб поверхности. | |
const MbCube & | Cube () const |
Вернуть сохраненный габаритный куб. Он должен быть пустой. Рекомендуется использовать GetGabarit. | |
void | SetDirtyGabarit () const |
Сделать габарит пустым. Для внутреннего использования. | |
void | CopyGabarit (const MbSurface &s, const MbVector3D *to=c3d_null) |
Скопировать габаритный куб из копии. Подробнее... | |
double | GetGabDiagonal () const |
Вычислить диагональ габаритного куба. | |
void | CalculateRect (const MbPlacement3D &place, MbRect &rect) const |
Вычислить прямоугольный габарит поверхности в заданной плоскости. Подробнее... | |
virtual MbContour & | MakeContour (bool sense) const |
Вернуть граничный двумерный контур. Подробнее... | |
virtual MbCurve & | MakeSegment (size_t i, bool sense) const |
Вернуть сегмент граничного двумерного контура. Подробнее... | |
MbCurve & | MakeCurve (size_t number1, size_t number2) const |
Вернуть сегмент граничного двумерного контура. Подробнее... | |
virtual void | SetLimit (double u1, double v1, double u2, double v2) |
Установить пределы поверхности. Для внутреннего использования. | |
void | SetLimit (const MbRect &) |
Установить пределы поверхности. Для внутреннего использования. | |
virtual void | SetExtendedParamRegion (double u1, double v1, double u2, double v2) |
Установить расширенные пределы поверхности. Для внутреннего использования. | |
virtual void | IncludePoint (double u, double v) |
Включить точку в область определения. Для внутреннего использования. | |
double | GetMaxParamDeltaU () const |
Дать максимальное приращение параметра U. | |
double | GetMaxParamDeltaV () const |
Дать максимальное приращение параметра V. | |
virtual double | GetParamDelta () const |
Дать максимальное приращение параметра. | |
virtual double | GetParamPrice () const |
Дать минимально различимую величину параметра. | |
virtual double | GetUParamToUnit () const |
Дать приращение параметра u, осреднённо соответствующее единичной длине в пространстве. | |
virtual double | GetVParamToUnit () const |
Дать приращение параметра v, осреднённо соответствующее единичной длине в пространстве. | |
virtual double | GetUParamToUnit (double u, double v) const |
Дать приращение параметра u, соответствующее единичной длине в пространстве. | |
virtual double | GetVParamToUnit (double u, double v) const |
Дать приращение параметра v, соответствующее единичной длине в пространстве. | |
double | GetUParamToUnit (const MbCartPoint &uv) const |
Дать приращение параметра u, соответствующее единичной длине в пространстве. | |
double | GetVParamToUnit (const MbCartPoint &uv) const |
Дать приращение параметра v, соответствующее единичной длине в пространстве. | |
virtual void | GetParamsToUnit (double u, double v, double &uParam, double &vParam) const |
Дать приращение параметра u и параметра v, соответствующее единичной длине в пространстве. | |
double | GetUEpsilon () const |
Дать минимально различимую величину параметра U. Соответствует длине в пространстве = Math::metricEpsilon. | |
double | GetVEpsilon () const |
Дать минимально различимую величину параметра V. Соответствует длине в пространстве = Math::metricEpsilon. | |
double | GetUEpsilon (double u, double v) const |
Дать минимально различимую величину параметра U. Соответствует длине в пространстве = Math::metricEpsilon. | |
double | GetVEpsilon (double u, double v) const |
Дать минимально различимую величину параметра V. Соответствует длине в пространстве = Math::metricEpsilon. | |
double | GetURegion () const |
Дать минимально различимую величину параметра U. Соответствует длине в пространстве = Math::metricRegion. | |
double | GetVRegion () const |
Дать минимально различимую величину параметра V. Соответствует длине в пространстве = Math::metricRegion. | |
double | GetURegion (double u, double v) const |
Дать минимально различимую величину параметра U. Соответствует длине в пространстве = Math::metricRegion. | |
double | GetVRegion (double u, double v) const |
Дать минимально различимую величину параметра V. Соответствует длине в пространстве = Math::metricRegion. | |
virtual size_t | GetUMeshCount () const |
Выдать количество разбиений по u. | |
virtual size_t | GetVMeshCount () const |
Выдать количество разбиений по v. | |
void | CalculatePolygon (double minPar, double maxPar, double constPar, MbeParamDir dir, const MbStepData &stepData, MbPolygon3D &polygon) const |
Рассчитать полигон по параметру U или V. Подробнее... | |
virtual void | CalculateSurfaceWire (const MbStepData &stepData, size_t beg, MbMesh &mesh, size_t uMeshCount=c3d::WIRE_MAX, size_t vMeshCount=c3d::WIRE_MAX) const |
Рассчитать сетку. Подробнее... | |
virtual void | GetTesselation (const MbStepData &stepData, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const |
Определить разбивку параметрической области поверхности вертикалями и горизонталями. Подробнее... | |
void | AddTesselation (const MbStepData &stepData, MbeParamDir dir, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const |
Определить разбивку параметрической области поверхности с учетом направления. Подробнее... | |
virtual void | CalculateSurfaceGrid (const MbStepData &stepData, bool sense, MbGrid &grid) const |
Аппроксимировать поверхность треугольными пластинами. Подробнее... | |
virtual bool | IsRectangular () const |
Определить, ортогональны ли производные по u и v. | |
virtual bool | IsLineU () const |
Проверить, что все производные поверхности по U выше первой равны нулю. | |
virtual bool | IsLineV () const |
Проверить, что все производные поверхности по V выше первой равны нулю. | |
virtual bool | IsShift (const MbSpaceItem &obj, MbVector3D &dir, bool &isSame, double accuracy=LENGTH_EPSILON) const |
Определить, является ли объект смещением. Подробнее... | |
virtual void | CheckSurfParams (double &u, double &v) const |
Проверить параметры. Аналог глобальной функции _CheckParams, оптимизированный под использование кэшей. Подробнее... | |
bool | GetPlacement (MbPlacement3D *place, bool exact=false) const |
Дать плоскость (или только возможность ее выдачи). | |
bool | GetPlanePlacement (MbPlacement3D &place) const |
Дать плоскость. | |
bool | GetControlPlacement (MbPlacement3D &place, bool sameSense=true) const |
Дать плейсмент поверхности в средней точке. | |
bool | OrientPlacement (MbPlacement3D &place, bool normalSense=true) const |
Сориентировать ось Х плейсмента вдоль линии его пересечения с поверхностью. | |
bool | IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const |
Определить, лежит ли точка на плоскости. | |
void | PointOn (MbCartPoint &uv, MbCartPoint3D &p) const |
Вычислить точку на поверхности в области определения поверхности. | |
void | _PointOn (const MbCartPoint &uv, MbCartPoint3D &p) const |
Вычислить точку на продолженной поверхности. | |
void | Normal (MbCartPoint &uv, MbVector3D &v) const |
Вычислить нормаль к поверхности в области определения поверхности. | |
bool | GetMatrix (double xMin, double xMax, double yMin, double yMax, MbMatrix &matr) const |
Найти матрицу преобразования для кривых на поверхности при изменении параметризации. Подробнее... | |
double | GetUMid () const |
Среднее значение параметра u. | |
double | GetVMid () const |
Среднее значение параметра v. | |
double | GetURange () const |
Параметрическая длина по u. | |
double | GetVRange () const |
Параметрическая длина по v. | |
void | GetRect (MbRect &r) const |
Получить параметрические границы поверхности. | |
void | GetRect (MbRect2D &r) const |
Получить параметрические границы поверхности. | |
![]() | |
virtual | ~MbSpaceItem () |
Деструктор. | |
void | PrepareWrite () const |
Регистрация объекта. Подробнее... | |
virtual MbeRefType | RefType () const |
Получить регистрационный тип (для копирования, дублирования). | |
virtual bool | IsFamilyRegistrable () const |
Принадлежит ли объект к регистрируемому семейству. | |
virtual bool | IsSimilar (const MbSpaceItem &item) const |
Определить, являются ли объекты подобными. Подробнее... | |
void | CalculateWire (const MbStepData &stepData, MbMesh &mesh) const |
void | CalculateWire (double sag, MbMesh &mesh) const |
virtual void | GetBasisItems (RPArray< MbSpaceItem > &) |
Выдать базовые объекты в присланный контейнер. | |
![]() | |
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. | |
Защищенные члены | |
MbSurface () | |
Конструктор. | |
MbSurface (const MbSurface &) | |
Конструктор копирования. | |
void | MoveGabarit (const MbVector3D &v) |
Сдвинуть габарит. | |
void | NormalCalculation (const MbVector3D &uDer, const MbVector3D &vDer, double u, double v, bool ext, MbVector3D &nor) const |
Вычислить нормаль по известным производным uDer и vDer в точке с параметрами u, v. | |
double | StepAlong (double u, double v, double sag, bool alongU, double stepMinCoeff, const MbVector3D &der, const MbVector3D &sec) const |
Вычислить шаг по параметру для заданного прогиба. | |
double | DeviationStepAlong (double u, double v, double angle, bool alongU, const MbVector3D &der, const MbVector3D &sec) const |
Вычислить шаг по параметру для заданного углового отклонения нормали. | |
![]() | |
MbSpaceItem () | |
Конструктор без параметров. | |
Защищенные данные | |
MbCube | cube |
Габаритный куб поверхности. Подробнее... | |
Поверхность в трехмерном пространстве.
Родительский класс всех поверхностей в трехмерном пространстве. Поверхность представляет собой векторную функцию двух скалярных параметров, принимающих значения на двумерной связной области. Поверхность представляет собой непрерывное отображение двумерной связной области в трёхмерное пространство.
Для всех поверхностей, кроме MbCurveBoundedSurface, областью определения является прямоугольник в двумерном пространстве параметров.
Поверхность используется:
для пространственного моделирования,
для построения граней тел в частных случаях.
|
pure virtual |
Создать копию объекта.
Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.
[in] | iReg | - Регистратор. |
Замещает MbSpaceItem.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbChannelSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbSmoothSurface, MbRuledSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Определить, являются ли объекты равными.
Равными считаются однотипные объекты, все данные которых одинаковы (равны).
[in] | item | - Объект для сравнения. |
[in] | accuracy | - Точность сравнения. |
Замещает MbSpaceItem.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbChannelSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbSmoothSurface, MbRuledSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Сделать объекты равным, если они подобны.
Равными можно сделать только подобные объекты. Подобный объект приравнивается присланному путем изменения численных данных.
[in] | item | - Объект для инициализации. |
Замещает MbSpaceItem.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbChannelSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbSmoothSurface, MbRuledSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Преобразовать объект согласно матрице.
Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.
[in] | matr | - Матрица преобразования. |
[in] | iReg | - Регистратор. |
Замещает MbSpaceItem.
Замещается в MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbSmoothSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Сдвинуть объект вдоль вектора.
Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.
[in] | to | - Вектор сдвига. |
[in] | iReg | - Регистратор. |
Замещает MbSpaceItem.
Замещается в MbMeshSurface, MbSectionSurface, MbJoinSurface, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbRuledSurface, MbSmoothSurface, MbChamferSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Повернуть объект вокруг оси на заданный угол.
Повернуть объект вокруг оси на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.
[in] | axis | - Ось поворота. |
[in] | angle | - Угол поворота. |
[in] | iReg | - Регистратор. |
Замещает MbSpaceItem.
Замещается в MbMeshSurface, MbSectionSurface, MbJoinSurface, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbRuledSurface, MbSmoothSurface, MbChamferSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
virtual |
Определить расстояние до точки.
Определить расстояние до точки.
[in] | point | - Точка. |
Замещает MbSpaceItem.
Переопределяется в MbPlane, MbGridSurface, MbCurveBoundedSurface и MbElementarySurface.
|
virtual |
Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
Расширить присланный габаритный куб так, чтобы он включал в себя данный объект.
[in,out] | cube | - Принимающий габаритный куб с информацией по габаритам. |
Замещает MbSpaceItem.
|
virtual |
Рассчитать временные (mutable) данные объекта.
Рассчитать временные данные объекта в зависимости от параметра forced. Если параметр forced равен false, рассчитываются только ещё не насчитанные данные. Если параметр forced равен true, перерасчитываются все временные данные объекта. Принудительный перерасчёт.
|
virtual |
Построить полигональную копию mesh.
Построить полигональную копию данного объекта, представленную полигонами, или/и плоскими пластинами.
[in] | stepData | - Данные для вычисления шага при построении полигонального. |
[in] | note | - Способ построения полигонального объекта. |
[in,out] | mesh | - Построенный полигональный объект. |
Замещает MbSpaceItem.
Переопределяется в MbGridSurface и MbCurveBoundedSurface.
|
pure virtual |
Выдать свойства объекта.
Выдать внутренние данные (свойства) объекта для их просмотра и модификации.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbSpaceItem.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbChannelSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbSmoothSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Изменить свойства объекта.
Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.
[in] | properties | - Контейнер для внутренних данных объекта. |
Замещает MbSpaceItem.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbFilletSurface, MbConeSurface, MbCylinderSurface, MbCurveBoundedSurface, MbEvolutionSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbSmoothSurface, MbChamferSurface, MbSphereSurface, MbSpiralSurface, MbElevationSurface, MbExpansionSurface, MbCoverSurface, MbExactionSurface, MbCornerSurface, MbPolySurface, MbExtrusionSurface, MbExplorationSurface, MbGregorySurface, MbSectorSurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Определить, замкнута ли поверхность по параметру u.
Определить, замкнута ли гладко поверхность по u-параметру без учета граничного контура. Всегда false для MbCurveBoundSurface. Рекомендуется использовать IsUPeriodic.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbConeSurface, MbCurveBoundedSurface, MbCylinderSurface, MbTorusSurface, MbSmoothSurface, MbSphereSurface, MbCoverSurface, MbCornerSurface, MbPolySurface, MbGregorySurface, MbSweptSurface и MbElementarySurface.
|
pure virtual |
Определить, замкнута ли поверхность по параметру v.
Определить, замкнута ли гладко поверхность по v-параметру без учета граничного контура. Всегда false для MbCurveBoundSurface. Рекомендуется использовать IsVPeriodic.
Замещается в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbOffsetSurface, MbCoonsPatchSurface, MbGridSurface, MbConeSurface, MbCurveBoundedSurface, MbCylinderSurface, MbTorusSurface, MbSmoothSurface, MbSphereSurface, MbCoverSurface, MbCornerSurface, MbPolySurface, MbGregorySurface, MbSweptSurface и MbElementarySurface.
|
virtual |
Определить, замкнута ли фактически поверхность по u-параметру независимо от гладкости замыкания.
Определить, замкнута ли фактически поверхность по u-параметру независимо от гладкости замыкания.
Переопределяется в MbSplineSurface, MbMeshSurface, MbCurveBoundedSurface и MbGregorySurface.
|
virtual |
Определить, замкнута ли фактически поверхность по v-параметру независимо от гладкости замыкания.
Определить, замкнута ли фактически поверхность по v-параметру независимо от гладкости замыкания.
Переопределяется в MbSplineSurface, MbMeshSurface, MbCurveBoundedSurface и MbGregorySurface.
|
virtual |
Определить, замкнута ли поверхность по параметру u.
Определить, замкнута ли гладко поверхность по u-параметру без учета граничного контура.
Переопределяется в MbSplineSurface, MbMeshSurface, MbCurveBoundedSurface и MbGregorySurface.
|
virtual |
Определить, замкнута ли поверхность по параметру v.
Определить, замкнута ли гладко поверхность по v-параметру без учета граничного контура.
Переопределяется в MbSplineSurface, MbMeshSurface, MbCurveBoundedSurface и MbGregorySurface.
|
virtual |
Вернуть период.
Период вычисляется для гладко замкнутой поверхности по одному из параметров. Если поверхность не замкнута по этому параметру, возвращается 0.
[in] | i | - Показывает направление: 0 - период по u, 1 - период по v. |
|
virtual |
Определить периодичность.
Является ли поверхность периодической.
|
virtual |
Вычислить граничную точку.
Вычислить одну из точек, параметры которых принимают наибольшие или наименьшие значения.
[in] | number | - Номер граничной точки. 1 соответствует точке (umin, vmin) 2 - точке (umax, vmin) 3 - точке (umax, vmax) 4 - точке (umin, vmax) |
[in,out] | pnt | - Вычисленная точка. |
Переопределяется в MbPlane, MbGridSurface и MbCurveBoundedSurface.
|
virtual |
Вычислить двумерную граничную точку.
Вычислить одну из точек, параметры которых принимают наибольшие или наименьшие значения.
[in] | number | - Номер граничной точки. 1 соответствует точке (umin, vmin) 2 - точке (umax, vmin) 3 - точке (umax, vmax) 4 - точке (umin, vmax) |
[in,out] | pnt | - Вычисленная точка. |
Переопределяется в MbPlane, MbGridSurface и MbCurveBoundedSurface.
MbCartPoint3D MbSurface::GetLimitPoint | ( | ptrdiff_t | number | ) | const |
Вычислить граничную точку.
Вычислить одну из точек, параметры которых принимают наибольшие или наименьшие значения.
[in] | number | - Номер граничной точки. 1 соответствует точке (umin, vmin) 2 - точке (umax, vmin) 3 - точке (umax, vmax) 4 - точке (umin, vmax) |
|
virtual |
Вычислить кривизну линии вдоль u.
Вычисляется кривизна линии вдоль u при v = const.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
Переопределяется в MbSectionSurface, MbPlane, MbOffsetSurface, MbConeSurface, MbCurveBoundedSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbSpiralSurface, MbExpansionSurface и MbExtrusionSurface.
|
virtual |
Вычислить кривизну линии вдоль v.
Вычисляется кривизна линии вдоль v при u = const.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
Переопределяется в MbPlane, MbOffsetSurface, MbConeSurface, MbCurveBoundedSurface, MbFilletSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbSphereSurface, MbChamferSurface, MbExpansionSurface, MbExtrusionSurface и MbSectorSurface.
double MbSurface::NormalCurvatureU | ( | double | u, |
double | v | ||
) | const |
Вычислить нормальную кривизну линии вдоль u.
Вычисляется нормальная кривизна координатной линии вдоль u.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
double MbSurface::NormalCurvatureV | ( | double | u, |
double | v | ||
) | const |
Вычислить нормальную кривизну линии вдоль v.
Вычисляется нормальная кривизна координатной линии вдоль v.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
double MbSurface::NormalCurvature | ( | double | u, |
double | v, | ||
double | du, | ||
double | dv | ||
) | const |
Вычислить нормальную кривизну поверхности.
Вычисляется нормальная кривизна поверхности вдоль линии du dv.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
[in] | du | - Задает направление линии, вдоль которой вычисляется нормальная кривизна. |
[in] | dv | - Задает направление линии, вдоль которой вычисляется нормальная кривизна. |
bool MbSurface::MeanGaussCurvature | ( | double | u, |
double | v, | ||
double & | mean, | ||
double & | gauss | ||
) | const |
Вычислить Среднюю и Гауссову кривизну.
Средняя и Гауссова кривизна.
[in] | u | - Параметр. |
[in] | v | - Параметр. |
[out] | mean | - Средняя кривизна. |
[out] | gauss | - Гауссова кривизна. |
|
virtual |
Дать физический радиус объекта или ноль, если это невозможно.
Метод выдает максимальный физический радиус по одному из изопараметрических направлений, если соответствующая изопараметрическая кривая является дугой окружности, в противном случае метод выдает ноль.
Переопределяется в MbSplineSurface, MbConeSurface, MbCylinderSurface, MbFilletSurface, MbTorusSurface, MbCurveBoundedSurface, MbSphereSurface и MbExtrusionSurface.
|
virtual |
Изменение носителя.
Используется для объединения компланарных граней.
Переопределяется в MbMeshSurface, MbSectionSurface, MbOffsetSurface, MbCoonsPatchSurface, MbLoftedSurface, MbCurveBoundedSurface, MbFilletSurface, MbRevolutionSurface, MbEvolutionSurface, MbRuledSurface, MbCoverSurface, MbChamferSurface, MbCornerSurface, MbElevationSurface, MbSpiralSurface, MbExpansionSurface, MbExtrusionSurface и MbSectorSurface.
|
virtual |
Изменение носимых элементов.
Используется для объединения компланарных граней. Поверхности item и init должны быть подобны.
[in] | item | - Изменяемая поверхность |
[in] | init | - Новая поверхность |
[in] | matr | - Матрица перехода из item в init |
Переопределяется в MbOffsetSurface, MbCurveBoundedSurface, MbFilletSurface и MbChamferSurface.
|
virtual |
Периодичность направляющей.
Переопределяется в MbEvolutionSurface.
MbSplineSurface* MbSurface::NurbsSurface | ( | bool | bmatch = false | ) | const |
Построить NURBS копию поверхности.
Полученная поверхность всегда не замкнута как по u, так и по v. Исключением является сама поверхность NURBS. Если поверхность не требует пересчета, то выдается ее копия.
[in] | bmatch | - true, если при преобразовании нужно сохранить однозначное сответствие параметрических областей |
|
virtual |
Построить NURBS копию усеченной поверхности.
Полученная поверхность всегда не замкнута как по u, так и по v. Исключением является сама поверхность NURBS. Если поверхность не требует пересчета, то выдается ее копия Параметры u1, u2, v1, v2 - границы усечения поверхности.
[in] | u1 | - Минимальный параметр по U |
[in] | u2 | - Максимальный параметр по U |
[in] | v1 | - Минимальный параметр по V |
[in] | v2 | - Максимальный параметр по V |
[in] | bmatch | - true, если при преобразовании нужно сохранить однозначное сответствие параметрических областей |
Переопределяется в MbSplineSurface, MbOffsetSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbCurveBoundedSurface, MbConeSurface, MbFilletSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbChamferSurface, MbSpiralSurface, MbExpansionSurface, MbElevationSurface, MbExactionSurface, MbExtrusionSurface, MbSectorSurface и MbExplorationSurface.
|
virtual |
Построить NURBS копию поверхности.
Строит NURBS поверхность, аппроксимирующую исходную с заданными параметрами по каждому направлению. В параметрах можно задать степень и количество узлов сплайна, диапазон изменения параметра кривой. Если в параметрах не задан флаг точной аппроксимации, то строит NURBS без кратных узлов.
[in] | uParam | - Параметры построения по направлению u. |
[in] | vParam | - Параметры построения по направлению v. |
Переопределяется в MbSplineSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbCurveBoundedSurface, MbConeSurface, MbFilletSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbSphereSurface, MbSmoothSurface, MbExpansionSurface, MbExtrusionSurface и MbSectorSurface.
bool MbSurface::NurbsParam | ( | const MbNurbsParameters & | tParam, |
bool | uParam, | ||
double | op1, | ||
double | op2, | ||
bool & | isClosedNurbs, | ||
double & | epsilon, | ||
SArray< double > & | params | ||
) | const |
Подготовить параметры для преобразования в NURBS поверхность.
Подготовить параметры для преобразования в NURBS поверхность. Число точек вдоль выбранного направления определяется в переменной tParam.
[in] | tParam | - Параметры преобразования поверхности в NURBS по одному из параметров. |
[in] | uParam | - Какой параметр поверхности рассматривается: true - готовит аппроксимацию по u false - готовит аппроксимацию по v. |
[in] | op1 | - Минимальное значение второго параметра. |
[in] | op2 | - Максимальное значение второго параметра. |
[out] | isClosedNurbs | - true - если аппроксимирующая поверхность замкнута по выбранному направлению. |
[out] | epsilon | - На выходе - параметрическая точность по выбранному направлению. |
[out] | params | - Заполненный массив параметров разбиения вдоль выбранного направления. |
void MbSurface::CheckApproxPointParamsOpen | ( | bool | isU, |
double | par, | ||
size_t | degree, | ||
size_t | pCount, | ||
SArray< double > & | tList, | ||
SArray< double > & | aKnots | ||
) | const |
Выбрать точки для аппроксимации вдоль параметра.
Выбрать точки на поверхности для аппроксимации nurbs вдоль параметра в случае незамкнутой по выбранному направлению поверхности. Если поверхность аппроксимируется с заданным узловым вектором, то проверяются параметры разбиения для того, чтобы между элементами узлового вектора содержалась бы хотя бы одна точка разбиения. При необходимости список точек разбиения дополняется. Если узловой вектор не задан (пустой), то вычисляется узловой вектор в соответствии с порядком, количеством узлов и предложенным разбиением.
[in] | isU | - Какой параметр поверхности рассматривается: true - готовит аппроксимацию по u. false - готовит аппроксимацию по v. |
[in] | par | - Значение второго параметра. |
[in] | degree | - Порядок NURBS-поверхности по выбранному направлению. |
[in] | pCount | - Количество узлов NURBS-поверхности по выбранному направлению. |
[in,out] | tList | - Параметры разбиения поверхности по выбранному направлению. Вычисляются в функции NurbsParam. |
[in,out] | aKnots | - Узловой вектор NURBS-поверхности. |
void MbSurface::CheckApproxPointParamsClosed | ( | bool | isU, |
double | par, | ||
size_t | degree, | ||
size_t | pCount, | ||
SArray< double > & | tList, | ||
SArray< double > & | aKnots | ||
) | const |
Выбрать точки для аппроксимации вдоль параметра.
Выбрать точки на поверхности для аппроксимации nurbs вдоль параметра в случае замкнутой по выбранному направлению поверхности. Если поверхность аппроксимируется с заданным узловым вектором, то проверяются параметры разбиения для того, чтобы между элементами узлового вектора содержалась бы хотя бы одна точка разбиения. При необходимости список точек разбиения дополняется. Если узловой вектор не задан (пустой), то вычисляется узловой вектор в соответствии с порядком, количеством узлов и предложенным разбиением.
[in] | isU | - Какой параметр поверхности рассматривается: true - готовит аппроксимацию по u false - готовит аппроксимацию по v. |
[in] | par | - Значение второго параметра. |
[in] | degree | - Порядок NURBS-поверхности по выбранному направлению. |
[in] | pCount | - Количество узлов NURBS-поверхности по выбранному направлению. |
[in,out] | tList | - Параметры разбиения поверхности по выбранному направлению. Вычисляются в функции NurbsParam. |
[in,out] | aKnots | - Узловой вектор NURBS-поверхности. |
|
virtual |
Построить эквидистантую поверхность.
[in] | d | - Расстояние по нормали от базовой до эквидистантной поверхности. |
[in] | same | - Флаг, показывающий, использовать ли в эквидистантной поверхности текущую поверхность или ее копию. |
Переопределяется в MbMeshSurface, MbOffsetSurface, MbSectionSurface, MbJoinSurface, MbPlane, MbLoftedSurface, MbCurveBoundedSurface, MbConeSurface, MbFilletSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbChamferSurface, MbSpiralSurface, MbElevationSurface, MbChannelSurface, MbExactionSurface, MbExtrusionSurface и MbExplorationSurface.
|
virtual |
Построить пространственную копию линии v = const.
[in] | v | - Параметр по направлению V. |
[in] | pRgn | - Диапазон параметров по U. |
[in] | bApprox | - Если false, то вернет не ноль только в случае, если получится создать точную кривую. Если true, то вернет не ноль, если кривая не вырождена. |
Переопределяется в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbPlane, MbLoftedSurface, MbCoonsPatchSurface, MbCurveBoundedSurface, MbConeSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbCoverSurface, MbCornerSurface, MbSpiralSurface, MbExpansionSurface, MbExactionSurface, MbExtrusionSurface, MbSectorSurface и MbExplorationSurface.
|
virtual |
Построить пространственную копию линии u = const.
[in] | u | - Параметр по направлению U. |
[in] | pRgn | - Диапазон параметров по V. |
[in] | bApprox | - Если false, то вернет не ноль только в случае, если получится создать точную кривую. Если true, то вернет не ноль, если кривая не вырождена. |
Переопределяется в MbSplineSurface, MbMeshSurface, MbSectionSurface, MbPlane, MbLoftedSurface, MbCoonsPatchSurface, MbCurveBoundedSurface, MbConeSurface, MbFilletSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbCoverSurface, MbCornerSurface, MbChamferSurface, MbSpiralSurface, MbExpansionSurface, MbElevationSurface, MbExactionSurface, MbExtrusionSurface, MbSectorSurface и MbExplorationSurface.
|
virtual |
Построить пространственную копию линии по параметрической линии.
[in] | segm | - Отрезок в параметрической плоскости поверхности, пространственную копию которого надо построить. |
[in] | bApprox | - Если false, то вернет не ноль только в случае, если получится создать точную кривую. Если true, то вернет не ноль, если кривая не вырождена. |
Переопределяется в MbPlane, MbCurveBoundedSurface, MbConeSurface, MbCylinderSurface и MbRuledSurface.
|
virtual |
Определить, с какой стороны от поверхности находится точка.
[in] | pnt | - Исследуемая точка. |
[in] | eps | - Точность определения попадания точки на поверхность. |
Переопределяется в MbPlane.
|
virtual |
Находятся ли точка в области, принадлежащей поверхности.
Исследуется двумерная точка в параметрической плоскости поверхности.
[in] | pnt | - Исследуемая точка. |
[in] | ignoreClosed | - Учитывать ли замкнутость поверхности. Если true, то замкнутость не учитывается. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Вычислить параметрическое расстояние до ближайшей границы.
Найденное расстояние до ближайшей границы имеет положительное значение, если точка находится внутри, и отрицательное - если снаружи.
[in] | point | - Исследуемая точка. |
[in] | epsilon | - Точность определения попадания точки на поверхность. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Определить точки пересечения кривoй с контурами поверхности.
Определить точки пересечения кривoй с границами поверхности для нахождения частей кривой в пределах поверхности и векторов для их сдвига в пределы поверхности. Вектор сдвига определен для каждой точки пересечения. Если вектор сдвига найти нельзя, то в массив сохраняется вектор нулевой длины. Он может быть ненулевым, если поверхность замкнута хотя бы по одному из направлений. Тогда вектор сдвига позволяет сдвинуть часть кривой на некоторое количество периодов так, чтобы найденная точка пересечения кривой с границей находилась бы в пределах поверхности и производная к кривой в этой точке была бы направлена внутрь поверхности. С помощью вектора сдвига кривую можно сдвинуть на некоторое количество периодов. То есть метрически кривая не изменится.
[in] | curve | - Заданная кривая. |
[in,out] | tcurv | - Множество параметров кривой, соответствующих точкам пересечения. |
[in,out] | dir | - Множество векторов сдвига. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
size_t MbSurface::SurfaceBorderIntersection | ( | const MbCurve & | curve, |
SArray< double > & | tcurv, | ||
SArray< MbVector > & | dir | ||
) | const |
Определить точки пересечения кривoй с контурами поверхности.
Определить точки пересечения кривoй с границами поверхности для нахождения частей кривой в пределах поверхности и векторов для их сдвига в пределы поверхности. Вектор сдвига определен для каждой точки пересечения. Если вектор сдвига найти нельзя, то в массив сохраняется вектор нулевой длины. Он может быть ненулевым, если поверхность замкнута хотя бы по одному из направлений. Тогда вектор сдвига позволяет сдвинуть часть кривой на некоторое количество периодов так, чтобы найденная точка пересечения кривой с границей находилась бы в пределах поверхности и производная к кривой в этой точке была бы направлена внутрь поверхности. С помощью вектора сдвига кривую можно сдвинуть на некоторое количество периодов. То есть метрически кривая не изменится.
[in] | curve | - Заданная кривая. |
[in,out] | tcurv | - Множество параметров кривой, соответствующих точкам пересечения. |
[in,out] | dir | - Множество векторов сдвига. |
|
virtual |
Найти проекцию точки на поверхность.
Найти ближайшую проекцию точки на поверхность или ее продолжение по заданному начальному приближению. Если задан диапазон изменения параметров uvRange, то надо найти проекцию в заданном диапазоне. Диапазон параметров может выходить за область определения параметров поверхности. Используется метод Ньютона.
[in] | pnt | - Заданная точка. |
[in,out] | u | - На входе - начальное приближение, на выходе - параметр, соответствующий ближайшей проекции. |
[in,out] | v | - На входе - начальное приближение, на выходе - параметр, соответствующий ближайшей проекции. |
[in] | ext | - Флаг, определяющий, искать ли проекцию на продолжении поверхности (если true, то искать). |
[in] | uvRange | - Диапазон изменения параметров, в котором надо найти решение. |
Переопределяется в MbSplineSurface, MbMeshSurface, MbLoftedSurface, MbCurveBoundedSurface, MbOffsetSurface, MbFilletSurface, MbGridSurface, MbRevolutionSurface, MbRuledSurface, MbSpiralSurface, MbExtrusionSurface и MbElementarySurface.
|
virtual |
Найти все проекции точки на поверхность вдоль вектора в любом из двух направлений.
Вычислить все точки пересечения поверхности с лучом, выходящим из заданной точки p по направлению vect. Если задан диапазон изменения параметров uvRange, то надо найти проекцию в заданном диапазоне. Диапазон параметров может выходить за область определения параметров поверхности.
[in] | pnt | - Заданная точка. |
[in] | vect | - Вектор направления. |
[out] | uv | - Множество точек проекции в области определения поверхности. |
[in] | ext | - Флаг, определяющий, искать ли проекцию на продолжении поверхности (если true, то искать). |
[in] | uvRange | - Диапазон изменения параметров поверхности, в котором надо найти решение. |
Переопределяется в MbSplineSurface, MbMeshSurface, MbOffsetSurface, MbPlane, MbLoftedSurface, MbCurveBoundedSurface, MbGridSurface, MbConeSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface и MbSphereSurface.
|
virtual |
Найти ближайшую проекцию точки на поверхность в направлении вектора.
Вычислить ближайшую точку пересечения поверхности с лучом, выходящим из заданной точки p по направлению vect. Если задан диапазон изменения параметров uvRange - то надо найти проекцию в заданном диапазоне. Диапазон параметров может выходить за область определения параметров поверхности.
[in] | pnt | - Заданная точка. |
[in] | vect | - Вектор направления. |
[in,out] | u | - На входе - начальное приближение, на выходе - параметр, соответствующий ближайшей проекции. |
[in,out] | v | - На входе - начальное приближение, на выходе - параметр, соответствующий ближайшей проекции. |
[in] | ext | - Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать). |
[in] | uvRange | - Диапазон изменения параметров, в котором надо найти решение. |
Переопределяется в MbPlane.
|
virtual |
Определить точки пересечения поверхности и кривой.
Определить точки пересечения поверхности и кривой.
[in] | curv | - Заданная кривая. |
[in] | uv | - Множество точек пересечения на поверхности. |
[in,out] | tt | - Множество точек пересечения на кривой. |
[in] | ext0 | - Флаг, определяющий, искать ли пересечения на расширенной поверхности (если true, то искать). |
[in] | ext | - Флаг, определяющий, искать ли пересечения на продолжении кривой (если true, то искать). |
[in] | touchInclude | - Считать ли касание пересечением. Если true, то считать. |
Переопределяется в MbPlane, MbCurveBoundedSurface, MbGridSurface, MbConeSurface, MbCylinderSurface, MbTorusSurface, MbSphereSurface, MbRuledSurface и MbExtrusionSurface.
|
virtual |
Определить, подобны ли поверхности для объединения.
Поверхности подобны для объединения, если геометрически они совпадают или переходят одна в другую.
[in] | surf | - Заданная поверхность. |
[in] | version | - Версия операции. |
[in] | precision | - Погрешность вычислений. |
Переопределяется в MbSplineSurface, MbSectionSurface, MbPlane, MbCurveBoundedSurface, MbOffsetSurface, MbFilletSurface, MbConeSurface, MbCylinderSurface, MbTorusSurface, MbRevolutionSurface, MbEvolutionSurface, MbRuledSurface, MbSphereSurface, MbChamferSurface, MbCoverSurface, MbExpansionSurface, MbSpiralSurface, MbExtrusionSurface и MbExactionSurface.
|
virtual |
Построение проекции поверхностной кривой на совпадающую поверхность.
Строится проекция кривой пересечения поверхностей на некоторую заданную поверхность. В функции подразумевается, что заданная поверхность подобна одной из несущих поверхностей кривой пересечения, но этот факт не проверяется.
[in] | spaceCurve | - Заданная кривая пересечения. |
[in] | curve | - Двумерная кривая на поверхности. |
[in] | surfNew | - Новая поверхность. |
[out] | curveNew | - Полученная двумерная кривая на новой поверхности. |
Переопределяется в MbCurveBoundedSurface и MbSphereSurface.
bool MbSurface::ProjectCurveOnSimilarSurface | ( | const MbCurve3D & | spaceCurve, |
const MbCurve & | curve, | ||
const MbSurface & | surfNew, | ||
SPtr< MbCurve > & | curveNew | ||
) | const |
Построение проекции поверхностной кривой на совпадающую поверхность.
Строится проекция кривой пересечения поверхностей на некоторую заданную поверхность. В функции подразумевается, что заданная поверхность подобна одной из несущих поверхностей кривой пересечения, но этот факт не проверяется.
[in] | spaceCurve | - Заданная кривая пересечения. |
[in] | curve | - Двумерная кривая на поверхности. |
[in] | surfNew | - Новая поверхность. |
[out] | curveNew | - Полученная двумерная кривая на новой поверхности. |
|
virtual |
Дать двумерную матрицу преобразования из своей параметрической области в параметрическую область surf.
Вычисление матрицы преобразования из одной параметрической области в другую осуществляется для поверхностей, подобных для объединения.
[in] | surf | - Заданная поверхность. |
[out] | matr | - Матрица преобразования. |
[in] | version | - Версия операции. |
[in] | precision | - Погрешность вычислений. |
Переопределяется в MbSplineSurface, MbSectionSurface, MbPlane, MbCurveBoundedSurface, MbOffsetSurface, MbFilletSurface, MbConeSurface, MbCylinderSurface, MbTorusSurface, MbRevolutionSurface, MbRuledSurface, MbEvolutionSurface, MbSphereSurface, MbChamferSurface, MbExpansionSurface, MbCoverSurface, MbSpiralSurface, MbExtrusionSurface и MbExactionSurface.
|
virtual |
Вычислить ближайшее расстояние до кривой.
Вычисляется минимальное расстояние между кривой и поверхностью. Определяются точки на поверхности и кривой, между которыми расстояние минимально.
[in] | curve | - Заданная кривая. |
[out] | u | - Координата вычисленной точки на поверхности. |
[out] | v | - Координата вычисленной точки на поверхности. |
[in,out] | t | - На входе - начальное приближение к искомой точке на кривой. На выходе - параметр вычисленной точки на кривой. |
[in] | tCalc | - Флаг, показывающий, использовать ли t в качестве начального приближения. |
|
virtual |
Вычислить ближайшее расстояние до поверхности.
Вычисляется минимальное расстояние между двумя поверхностями. Определяются точки на поверхностях, между которыми расстояние минимально.
[in] | surf1 | - Заданная поверхность. |
[out] | u0 | - Координата вычисленной точки на текущей поверхности. |
[out] | v0 | - Координата вычисленной точки на текущей поверхности. |
[out] | u1 | - Координата вычисленной точки на заданной поверхности. |
[out] | v1 | - Координата вычисленной точки на заданной поверхности. |
|
virtual |
Вычислить U-пары от V.
Вычислить значимые параметры u поверхности при заданном параметре v. В случае поверхности общего вида - минимальное и максимальное значения параметра u.
[in] | v | - Заданный параметр. |
[out] | u | - Множество значений u. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Вычислить V-пары от U.
Вычислить значимые параметры v поверхности при заданном параметре u. В случае поверхности общего вида - минимальное и максимальное значения параметра v.
[in] | u | - Заданный параметр. |
[out] | v | - Множество значений v. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Найти все изоклины поверхности.
Найти точки на поверхности, в которых касательная плоскость параллельна некоторой плоскости, имеющей нормаль nor.
[in] | nor | - Вектор, задающий плоскость. |
[out] | uv | - Множество параметров точек с искомой касательной. |
|
inline |
Скопировать габаритный куб из копии.
Скопировать из копии готовые метрические оценки, которые в оригинале не были расчитаны.
[in] | s | - Поверхность-копия. |
void MbSurface::CalculateRect | ( | const MbPlacement3D & | place, |
MbRect & | rect | ||
) | const |
Вычислить прямоугольный габарит поверхности в заданной плоскости.
Выдать прямоугольный габарит поверхности в плоскости XOY плейсмента.
[in] | place | - Заданный плейсмент. |
[out] | rect | - Вычисленный прямоугольник. |
|
virtual |
Вернуть граничный двумерный контур.
Функция создает новый двумерный граничный контур. После использования объект надо удалить.
[in] | sense | - Совпадает ли направление контура с направлением обхода против часовой стрелки. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Вернуть сегмент граничного двумерного контура.
Функция создает сегмент граничного контура в соответствии с параметром i.
i = 0 - Отрезок границы при v = vmin
i = 1 - Отрезок границы при u = umax
i = 2 - Отрезок границы при v = vmax
i = 3 - Отрезок границы при u = umin
После использования объект надо удалить.
[in] | i | - Номер сегмента. |
[in] | sense | - Совпадает ли направление контура с направлением обхода против часовой стрелки. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
MbCurve& MbSurface::MakeCurve | ( | size_t | number1, |
size_t | number2 | ||
) | const |
Вернуть сегмент граничного двумерного контура.
Функция находит крайние точки поверхности с помощью функции GetLimitPoint и строит отрезок от точки с номером number1 до точки с номером number2. После использования объект надо удалить.
[in] | number1 | - Номер граничной точки поверхности. |
[in] | number2 | - Номер граничной точки поверхности. |
void MbSurface::CalculatePolygon | ( | double | minPar, |
double | maxPar, | ||
double | constPar, | ||
MbeParamDir | dir, | ||
const MbStepData & | stepData, | ||
MbPolygon3D & | polygon | ||
) | const |
Рассчитать полигон по параметру U или V.
В функции строится поверхностная кривая - отрезок вдоль выбранного направления и считается полигон, аппроксимирующий эту кривую.
[in] | minPar | - Минимальное значение параметра по выбранному направлению. |
[in] | maxPar | - Максимальное значение параметра по выбранному направлению. |
[in] | constPar | - Значение второго параметра. |
[in] | dir | - Выбранное направление. dir == pd_DirU - расчет производится по параметру u, v = const. dir == pd_DirV - расчет производится по параметру v, u = const. |
[in] | sag | - Величина прогиба, определяющая точность аппроксимации. |
[out] | polygon | - Насчитанный полигон. |
|
virtual |
Рассчитать сетку.
В функции производится расчет сетки для отрисовки поверхности.
[in] | sag | - Величина прогиба, определяющая точность. |
[in] | beg | - Номер первого узла, который попадет в сетку, по каждому из направлений. Для построения сетки для всей поверхности beg == 0. |
[out] | mesh | - Насчитанный Фасетный объект. |
[in] | uMeshCount | - Количество u-линий отрисовочной сетки. |
[in] | vMeshCount | - Количество v-линий отрисовочной сетки. |
Переопределяется в MbCurveBoundedSurface, MbGridSurface и MbCornerSurface.
|
virtual |
Определить разбивку параметрической области поверхности вертикалями и горизонталями.
Определить разбивку параметрической области поверхности вертикалями и горизонталями при триангуляции.
[in] | stepData | - Данные для вычисления шага при триангуляции. |
[in] | u1 | - Минимальное значение параметра u в области разбиения поверхности. |
[in] | u2 | - Максимальное значение параметра u в области разбиения поверхности. |
[in] | v1 | - Минимальное значение параметра v в области разбиения поверхности. |
[in] | v2 | - Максимальное значение параметра v в области разбиения поверхности. |
[out] | uu | - Множество параметров разбиения по u. |
[out] | vv | - Множество параметров разбиения по v. |
Переопределяется в MbSplineSurface, MbPlane, MbSectionSurface, MbCurveBoundedSurface, MbOffsetSurface, MbFilletSurface, MbLoftedSurface, MbConeSurface, MbGridSurface, MbCylinderSurface, MbRevolutionSurface, MbTorusSurface, MbRuledSurface, MbEvolutionSurface, MbSphereSurface, MbSpiralSurface, MbExpansionSurface, MbExtrusionSurface, MbSectorSurface и MbExplorationSurface.
void MbSurface::AddTesselation | ( | const MbStepData & | stepData, |
MbeParamDir | dir, | ||
double | u1, | ||
double | u2, | ||
double | v1, | ||
double | v2, | ||
SArray< double > & | uu, | ||
SArray< double > & | vv | ||
) | const |
Определить разбивку параметрической области поверхности с учетом направления.
Определить разбивку параметрической области поверхности вертикалями и горизонталями. Добавить параметры в массив в направлении dir. Если массивы uu или vv не пустые, то элементы из них не удаляются, то есть происходит уточнение сетки в выбранном направлении.
[in] | stepData | - Данные для вычисления шага при триангуляции. |
[in] | dir | - Выбранное направление. dir == pd_DirU - расчет производится по параметру u, v = const. dir == pd_DirV - расчет производится по параметру v, u = const. |
[in] | u1 | - Минимальное значение параметра u в области разбиения поверхности. |
[in] | u2 | - Максимальное значение параметра u в области разбиения поверхности. |
[in] | v1 | - Минимальное значение параметра v в области разбиения поверхности. |
[in] | v2 | - Максимальное значение параметра v в области разбиения поверхности. |
[out] | uu | - Множество параметров разбиения по u. |
[out] | vv | - Множество параметров разбиения по v. |
|
virtual |
Аппроксимировать поверхность треугольными пластинами.
Аппроксимировать поверхность треугольными пластинами.
[in] | stepData | - Данные для вычисления шага при триангуляции. |
[in] | sense | - Определяет совпадение нормалей поверхности и треугольников. |
[out] | grid | - Результат разбиения. |
Переопределяется в MbCurveBoundedSurface и MbGridSurface.
|
virtual |
Определить, является ли объект смещением.
Определить, является ли объект смещением заданного объекта.
[in] | obj | - Объект - образец. |
[out] | dir | - Вектор смещения, если объект является смещением. |
[out] | isSame | - На выходе true, если текущая поверхность и объект-образец идентичны. |
Переопределяется в MbPlane, MbConeSurface, MbCylinderSurface, MbTorusSurface и MbSphereSurface.
|
virtual |
Проверить параметры. Аналог глобальной функции _CheckParams, оптимизированный под использование кэшей.
Проверить параметры и загнать в область определения, если параметр вышел за полюс.
[in] | surface | - Поверхность. |
[in] | u | - Первый параметр. |
[in] | v | - Второй параметр. |
Переопределяется в MbSplineSurface, MbMeshSurface, MbOffsetSurface и MbLoftedSurface.
bool MbSurface::GetMatrix | ( | double | xMin, |
double | xMax, | ||
double | yMin, | ||
double | yMax, | ||
MbMatrix & | matr | ||
) | const |
Найти матрицу преобразования для кривых на поверхности при изменении параметризации.
Для поверхности устанавливается новый диапазон параметров. Геометрически поверхность не изменяется. Функция ищет матрицу преобразования для двумерных кривых на поверхности для перехода от старой параметризации к новой.
[in] | xMin | - Новое минимальное значение параметра u. |
[in] | xMax | - Новое максимальное значение параметра u. |
[in] | yMin | - Новое минимальное значение параметра v. |
[in] | yMax | - Новое максимальное значение параметра v. |
[in] | matr | - Матрица преобразования. |
|
mutableprotected |
Габаритный куб поверхности.
Габаритный куб поверхности рассчитывается только при запросе габарита объекта. Габаритный куб в конструкторе объекта и после модификации объекта принимает неопределенное значение.