C3D Kernel  102057
Классы | Функции
Кривые
Геометрические объекты
Граф связей класса Кривые:

Классы

class  MbArc3D
 Дуга эллипса в трёхмерном пространстве. Подробнее...
class  MbBSpline
 Набор В-сплайнов NURBS кривой. Подробнее...
class  MbBezier3D
 Сплайн Безье в трёхмерном пространстве. Подробнее...
class  MbBridgeCurve3D
 Кривая-мостик, соединяющая концы двух кривых. Подробнее...
class  MbCharacterCurve3D
 Кривая, координатные функции которой заданы в символьном виде. Подробнее...
class  MbConeSpiral
 Коническая спираль. Подробнее...
class  MbContour3D
 Контур в трёхмерном пространстве. Подробнее...
class  MbContourOnPlane
 Контур на плоскости. Подробнее...
class  MbContourOnSurface
 Контур на поверхности. Подробнее...
class  MbCrookedSpiral
 Спираль с криволинейной осью. Подробнее...
class  MbCubicSpline3D
 Кубический сплайн. Подробнее...
class  MbCurveSpiral
 Спираль переменного радиуса. Подробнее...
class  MbHermit3D
 Cоставной кубический сплайн Эрмитa в трёхмерном пространстве. Подробнее...
class  MbLine3D
 Прямая в трехмерном пространстве. Подробнее...
class  MbLineSegment3D
 Отрезок прямой в трёхмерном пространстве. Подробнее...
class  MbNurbs3D
 NURBS кривая в трехмерном пространстве. Подробнее...
class  MbOffsetCurve3D
 Эквидистантная кривая в трехмерном пространстве. Подробнее...
class  MbPlaneCurve
 Плоская кривая в трехмерном пространстве. Подробнее...
class  MbPolyCurve3D
 Кривая в трехмерном пространстве, заданная точками. Подробнее...
class  MbPolyline3D
 Ломаная линия в трехмерном пространстве. Подробнее...
class  MbReparamCurve3D
 Репараметризованная кривая в трехмерном пространстве. Подробнее...
class  MbSilhouetteCurve
 Линия очерка или cилуэтная кривая поверхности. Подробнее...
class  MbSpiral
 Спираль. Подробнее...
class  MbSurfaceCurve
 Кривая на поверхности. Подробнее...
class  MbSurfaceIntersectionCurve
 Кривая пересечения двух поверхностей. Подробнее...
class  MbTrimmedCurve3D
 Усеченная кривая в трехмерном пространстве. Подробнее...
class  MbCurve3D
 Кривая в трехмерном пространстве. Подробнее...

Функции

MbCurve3DTrimContour (const MbContour3D &cntr, double t1, double t2, int sense, bool useTrimmedOnly)
 Усечь контур.
void MakeSpaceWireFrame (const MbItem &item, RPArray< MbCurve3D > &wire)
 Построить пространственный проволочный каркас по полигональному объекту.
void MakePlaneWireFrame (const MbItem &item, const MbPlacement3D &place, RPArray< MbCurve3D > &wire)
 Построить плоский проволочный каркас по полигональному объекту.
void MakePlaneVistaWireFrame (const MbItem &item, const MbPlacement3D &place, const MbCartPoint3D &vista, RPArray< MbCurve3D > &wire)
 Построить плоский проволочный каркас по полигональному объекту в перспективе.
void MakePlaneWireFrame (const MbItem &item, const MbPlacement3D &place, RPArray< MbCurve > &wire)
 Построить плоский проволочный каркас по полигональному объекту.
void MakePlaneVistaWireFrame (const MbItem &item, const MbPlacement3D &place, const MbCartPoint3D &vista, RPArray< MbCurve > &wire)
 Построить плоский проволочный каркас по полигональному объекту в перспективе.
MbeNewtonResult NearestPoints (const MbCurve3D &curve1, bool ext1, const MbCurve3D &curve2, bool ext2, double &t1, double &t2, double &dmin)
 Вычислить параметры ближайших точек двух кривых.
MbeNewtonResult CurveCrossNewton (const MbCurve3D &curve1, bool ext1, const MbCurve3D &curve2, bool ext2, double funcEpsilon, size_t iterLimit, double &t1, double &t2)
 Oпределение параметров ближайших точек кривых.
void CalculatePolygon (const MbCurve3D &curve, const MbStepData &stepData, std::vector< std::pair< double, MbCartPoint3D > > &paramPoints)
 Вычислить точки полигона кривой в общем случае.

Функции для работы внутри и вне области определения кривой.

Функции _PointOn, _FirstDer, _SecondDer, _ThirdDer,... не корректируют параметр при выходе за пределы области определения. При выходе за область определения незамкнутая кривая, в общем случае, продолжается по касательной, которую она имеет на соответствующем конце. Исключение составляют дуги эллипса и окружности - они продолжаются в соответствии со своими уравнениями.

virtual void MbCurve::Explore (double &t, bool ext, MbCartPoint &pnt, MbVector &fir, MbVector *sec, MbVector *thir) const
 Вычислить значения точки и производных для заданного параметра.

Функции описания области определения кривой

virtual bool MbCurve3D::IsClosed () const =0
 Определить, является ли кривая замкнутой.

Функции для работы в области определения кривой\n

функции PointOn, FirstDer, SecondDer, ThirdDer,... корректируют параметр при выходе его за пределы области определения параметра. Исключение составляет MbLine3D (прямая).

virtual void MbCurve3D::PointOn (double &t, MbCartPoint3D &p) const =0
 Вычислить точку на кривой.
virtual void MbCurve3D::FirstDer (double &t, MbVector3D &) const =0
 Вычислить первую производную.
virtual void MbCurve3D::SecondDer (double &t, MbVector3D &) const =0
 Вычислить вторую производную.
virtual void MbCurve3D::ThirdDer (double &t, MbVector3D &) const =0
 Вычислить третью производную.
virtual void MbCurve3D::Tangent (double &t, MbVector3D &) const
 Вычислить касательный вектор (нормализованный).
virtual void MbCurve3D::Normal (double &t, MbVector3D &) const
 Вычислить вектор главной нормали.
virtual void MbCurve3D::BNormal (double &t, MbVector3D &) const
 Вычислить вектор бинормали.

Функции для работы внутри и вне области определения кривой\n

функции _PointOn, _FirstDer, _SecondDer, _ThirdDer,... не корректируют параметр при выходе за пределы области определения.

virtual void MbCurve3D::_PointOn (double t, MbCartPoint3D &p) const
 Вычислить точку на кривой и её продолжении.
virtual void MbCurve3D::Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const
 Вычислить значения точки и производных для заданного параметра.
virtual void MbCurve3D::FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const
 Вычислить точку и производные на кривой.
virtual void MbCurve3D::_FirstDer (double t, MbVector3D &) const
 Вычислить первую производную на кривой и её продолжении.
virtual void MbCurve3D::_SecondDer (double t, MbVector3D &) const
 Вычислить вторую производную на кривой и её продолжении.
virtual void MbCurve3D::_ThirdDer (double t, MbVector3D &) const
 Вычислить третью производную на кривой и её продолжении.
virtual void MbCurve3D::_Tangent (double t, MbVector3D &) const
 Вычислить касательный вектор (нормализованный) на кривой и её продолжении.
virtual void MbCurve3D::_Normal (double t, MbVector3D &) const
 Вычислить вектор главной нормали (нормализованный) на кривой и её продолжении.
virtual void MbCurve3D::_BNormal (double t, MbVector3D &) const
 Вычислить вектор бинормали (нормализованный) на кривой и её продолжении.

Функции движения по кривой

virtual double MbCurve3D::Step (double t, double sag) const
 Вычислить шаг параметра.
virtual double MbCurve3D::DeviationStep (double t, double ang) const
 Вычислить шаг параметра.
virtual double MbCurve3D::MetricStep (double t, double length) const
 Вычислить шаг параметра.
double MbCurve3D::CurveStep (const double &t, const MbStepData &stepData) const
 Вычислить шаг параметра.

Общие функции кривой

virtual MbCurve3DMbCurve3D::NurbsCurve (const MbNurbsParameters &tParameters) const
 Построить NURBS копию кривой.
virtual MbCurve3DMbCurve3D::Trimmed (double t1, double t2, int sense) const
 Построить усеченную кривую.
virtual double MbCurve3D::CalculateLength (double t1, double t2) const
 Вычислить метрическую длину кривой.
virtual bool MbCurve3D::DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const
 Сдвинуть параметр вдоль кривой.
virtual bool MbCurve3D::ChangeCarrierBorne (MbSpaceItem &item, MbSpaceItem &init, const MbMatrix &matr)
 Изменить носитель.
virtual void MbCurve3D::CalculatePolygon (const MbStepData &stepData, MbPolygon3D &poligon) const
 Рассчитать массив точек для отрисовки.
virtual MbeNewtonResult MbCurve3D::PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &t, bool ext) const
 Найти проекцию точки на кривую.
virtual bool MbCurve3D::NearPointProjection (const MbCartPoint3D &pnt, double &t, bool ext, MbRect1D *tRange=NULL) const
 Найти проекцию точки на кривую.
virtual MbeNewtonResult MbCurve3D::IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &t) const
 Найти изоклины кривой.
virtual void MbCurve3D::GetIsoclinal (const MbVector3D &nor, SArray< double > &tIso) const
 Найти все изоклины кривой.
virtual MbCurveMbCurve3D::GetMap (const MbMatrix3D &into, MbRect1D *pRegion=NULL, VERSION version=Math::DefaultMathVersion(), bool *coincParams=NULL) const
 Построить плоскую проекцию некоторой части пространственной кривой.
virtual MbCurveMbCurve3D::GetMapPsp (const MbMatrix3D &into, double zNear, MbRect1D *pRegion=NULL) const
 Построить плоскую проекцию некоторой части пространственной кривой.
virtual MbCurveMbCurve3D::GetProjection (const MbPlacement3D &place, VERSION version) const
 Построить плоскую проекцию пространственной кривой на плоскость.
bool MbCurve3D::IsSpaceNear (const MbCurve3D &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const
 Определить, близкb ли две кривые метрически.
MbCartPoint3D MbCurve3D::GetLimitPoint (ptrdiff_t number) const
 Вычислить граничную точку.
void MbCurve3D::GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const
 Вычислить граничную точку.

Общие функции

virtual void MbFunction::Explore (double &t, bool ext, double &val, double &fir, double *sec, double *thr) const
 Вычислить значение и производные для заданного параметра.

Функции

MbCurve3D* TrimContour ( const MbContour3D cntr,
double  t1,
double  t2,
int  sense,
bool  useTrimmedOnly 
)

Усечь контур. Расширенная версия функции контура Trimmed

Аргументы:
[in]t1- Параметр, соответствующий началу усеченной кривой.
[in]t2- Параметр, соответствующий концу усеченной кривой.
[in]sense- Направление усеченной кривой относительно исходной.
sense = 1 - направление кривой сохраняется. sense = -1 - направление кривой меняется на обратное.
[in]useTrimmedOnly- При усечении создавать кривые MbTrimmedCurve3D.
Возвращает:
Построенная усеченная кривая.
void MakeSpaceWireFrame ( const MbItem item,
RPArray< MbCurve3D > &  wire 
)

Построить набор пространственных кривых, характеризующих полигональных объект.

void MakePlaneWireFrame ( const MbItem item,
const MbPlacement3D place,
RPArray< MbCurve3D > &  wire 
)

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

void MakePlaneVistaWireFrame ( const MbItem item,
const MbPlacement3D place,
const MbCartPoint3D vista,
RPArray< MbCurve3D > &  wire 
)

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

void MakePlaneWireFrame ( const MbItem item,
const MbPlacement3D place,
RPArray< MbCurve > &  wire 
)

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

void MakePlaneVistaWireFrame ( const MbItem item,
const MbPlacement3D place,
const MbCartPoint3D vista,
RPArray< MbCurve > &  wire 
)

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

virtual void MbCurve::Explore ( double &  t,
bool  ext,
MbCartPoint pnt,
MbVector fir,
MbVector sec,
MbVector thir 
) const [virtual]

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

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

Переопределяется в MbArc, MbBezier, MbCharacterCurve, MbContour, MbCosinusoid, MbCubicSpline, MbHermit, MbLine, MbLineSegment, MbNurbs, MbOffsetCurve, MbPointCurve, MbPolyCurve, MbPolyline, MbProjCurve, MbReparamCurve и MbTrimmedCurve.

virtual bool MbCurve3D::IsClosed ( ) const [pure virtual]

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

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

Замещается в MbArc3D, MbBSpline, MbBridgeCurve3D, MbCharacterCurve3D, MbContour3D, MbContourOnSurface, MbCrookedSpiral, MbLine3D, MbLineSegment3D, MbNurbs3D, MbOffsetCurve3D, MbPlaneCurve, MbPolyCurve3D, MbReparamCurve3D, MbSpiral, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

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

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

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

Замещается в MbArc3D, MbBSpline, MbBezier3D, MbBridgeCurve3D, MbCharacterCurve3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCrookedSpiral, MbCubicSpline3D, MbCurveSpiral, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbOffsetCurve3D, MbPlaneCurve, MbPolyCurve3D, MbPolyline3D, MbReparamCurve3D, MbSilhouetteCurve, MbSpiral, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual void MbCurve3D::_PointOn ( double  t,
MbCartPoint3D p 
) const [virtual]

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

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

Переопределяется в MbArc3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCrookedSpiral, MbCurveSpiral, MbHermit3D, MbLine3D, MbLineSegment3D, MbPlaneCurve, MbReparamCurve3D, MbSilhouetteCurve, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

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

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

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

Переопределяется в MbArc3D, MbBSpline, MbBezier3D, MbBridgeCurve3D, MbCharacterCurve3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCrookedSpiral, MbCubicSpline3D, MbCurveSpiral, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbOffsetCurve3D, MbPlaneCurve, MbPolyCurve3D, MbPolyline3D, MbReparamCurve3D, MbSilhouetteCurve, MbSpiral, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual void MbCurve3D::FastApproxExplore ( double &  t,
MbCartPoint3D pnt,
MbVector3D fir,
MbVector3D sec 
) const [virtual]

Функция перегружена у MbSurfaceIntersectionCurve и MbSilhouetteCurve для приближённого быстрого вычисления точки и производных. В остальных поверхностях эквивалентна функции Explore(t,false,pnt,fir,sec,NULL).

Аргументы:
[in]t- Параметр.
[out]pnt- Вычисленная точка.
[out]fir- Производная.
[out]sec- Вторая производная по t, если не ноль.

Переопределяется в MbSilhouetteCurve и MbSurfaceIntersectionCurve.

virtual double MbCurve3D::Step ( double  t,
double  sag 
) const [virtual]

Вычислить шаг параметра для аппроксимации кривой по величине прогиба кривой. Вычисление шага проходит с учетом радиуса кривизны. Шаг аппроксимации кривой выбирается таким образом, чтобы отклонение кривой от ее полигона не превышало заданную величину прогиба.

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]sag- Максимально допустимая величина прогиба.
Возвращает:
Величина шага по параметру в заданной точке.

Переопределяется в MbArc3D, MbBSpline, MbBezier3D, MbBridgeCurve3D, MbCharacterCurve3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCubicSpline3D, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbOffsetCurve3D, MbPlaneCurve, MbPolyline3D, MbReparamCurve3D, MbSpiral, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual double MbCurve3D::DeviationStep ( double  t,
double  ang 
) const [virtual]

Вычислить шаг параметра для аппроксимации кривой по углу отклонения касательной. Шаг аппроксимации кривой выбирается таким образом, чтобы угловое отклонение касательной кривой в следующей точке не превышало заданную величину ang.

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]ang- Максимально допустимый угол отклонения касательной.
Возвращает:
Величина шага по параметру в заданной точке.

Переопределяется в MbArc3D, MbBezier3D, MbBridgeCurve3D, MbCharacterCurve3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCubicSpline3D, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbOffsetCurve3D, MbPlaneCurve, MbPolyline3D, MbReparamCurve3D, MbSilhouetteCurve, MbSpiral, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual double MbCurve3D::MetricStep ( double  t,
double  length 
) const [virtual]

Вычислить шаг параметра для аппроксимации кривой по заданной метрической длине шага вдоль кривой.

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]len- Максимальная метрическая длина шага вдоль кривой.
Возвращает:
Величина шага по параметру в заданной точке.

Переопределяется в MbArc3D, MbConeSpiral, MbContour3D, MbLine3D, MbLineSegment3D, MbPlaneCurve, MbReparamCurve3D, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

double MbCurve3D::CurveStep ( const double &  t,
const MbStepData stepData 
) const

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

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]stepData- Данные для вычисления шага.
Возвращает:
Величина шага по параметру в заданной точке.
virtual MbCurve3D* MbCurve3D::NurbsCurve ( const MbNurbsParameters tParameters) const [virtual]

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

Аргументы:
[in]tParameters- Параметры построения NURBS копии кривой.
Возвращает:
Построенная NURBS кривая или NULL при неуспешном построении.

Переопределяется в MbArc3D, MbBezier3D, MbBridgeCurve3D, MbCubicSpline3D, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbPolyline3D, MbReparamCurve3D и MbTrimmedCurve3D.

virtual MbCurve3D* MbCurve3D::Trimmed ( double  t1,
double  t2,
int  sense 
) const [virtual]

Строит усеченную кривую, начало которой соответствует точке с параметром t1 и конец - точке с параметром t2. Можно изменить направление полученной кривой относительно исходной с помощью параметра sense. Если кривая замкнута, можно получить усеченную кривую, проходящую через начало кривой.
В случае замкнутой или периодической кривой три параметра sense, t1 и t2 однозначно определяют результат. В случае разомкнутой кривой параметр sense и параметрами усечения должны соответствовать друг другу:
1) если sense == 1, то t1 < t2,
2) если sense == -1, то t1 > t2.
Если есть несоответствие между sense и параметрами усечения, то приоритетным параметром считается sense. Если параметры t1 и t2 равны и кривая замкнута, в результате должны получить замкнутую кривую.

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

Переопределяется в MbArc3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCrookedSpiral, MbCurveSpiral, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbReparamCurve3D, MbSilhouetteCurve, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual double MbCurve3D::CalculateLength ( double  t1,
double  t2 
) const [virtual]

Вычислить метрическую длину разомкнутой кривой от параметра t1 до t2. Должно выполнятся условие t1 < t2.

Аргументы:
[in]t1- Начальный параметр отрезка кривой.
[in]t2- Конечный параметр отрезка кривой.
Возвращает:
Длина кривой.

Переопределяется в MbConeSpiral, MbContour3D, MbCrookedSpiral, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbReparamCurve3D и MbSurfaceIntersectionCurve.

virtual bool MbCurve3D::DistanceAlong ( double &  t,
double  len,
int  curveDir,
double  eps = Math::metricPrecision,
VERSION  version = Math::DefaultMathVersion() 
) const [virtual]

Сдвинуть параметр вдоль кривой на заданное расстояние в заданном направлении. Новое значение параметра сохраняется в переменной t. Если кривая не замкнута и длина ее части от точки с параметром t до конца в заданном направлении меньше, чем нужное смещение, то вычисления происходят на продолжении кривой, если можно построить продолжение.

Аргументы:
[in,out]t- На входе - исходное значение параметра. На выходе - новое значение параметра.
[in]len- Величина смещения вдоль кривой.
[in]curveDir- Направление смещения. Если curveDir - неотрицателно, то смещение направлено в сторону увеличения параметра. Иначе - в сторону уменьшения параметра.
[in]eps- Точность вычислений.
Возвращает:
true - если операция выполнена успешно, иначе false.

Переопределяется в MbArc3D, MbBezier3D, MbContour3D, MbCubicSpline3D, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbReparamCurve3D и MbSurfaceIntersectionCurve.

virtual bool MbCurve3D::ChangeCarrierBorne ( MbSpaceItem item,
MbSpaceItem init,
const MbMatrix matr 
) [virtual]

Для поверхностных кривых. Заменяет текущий носитель item на новый, если возможно. Трансформирует носимый элемент по заданной матрице.

Аргументы:
[in]item- Исходный носитель.
[in]init- Новый носитель.
[in]matr- Матрица для трансформации носимого элемента.
Возвращает:
true - если операция выполнена успешно, иначе false.

Переопределяется в MbContourOnSurface, MbSurfaceCurve и MbSurfaceIntersectionCurve.

virtual void MbCurve3D::CalculatePolygon ( const MbStepData stepData,
MbPolygon3D poligon 
) const [virtual]

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

Аргументы:
[in]sag- Максимальная величина прогиба.
[in,out]poligon- Полигон рассчитанных точек на кривой.

Переопределяется в MbLine3D, MbLineSegment3D, MbReparamCurve3D и MbSurfaceIntersectionCurve.

virtual MbeNewtonResult MbCurve3D::PointProjectionNewton ( const MbCartPoint3D p,
size_t  iterLimit,
double &  t,
bool  ext 
) const [virtual]

Найти проекцию точки на кривую или ее продолжение методом Ньютона по заданному начальному приближению.

Аргументы:
[in]p- Заданная точка.
[in]iterLimit- Максимальное количество итераций.
[out]t- На входе - начальное приближение, на выходе - параметр кривой, соответствующий ближайшей проекции.
[in]ext- Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать).
Возвращает:
Результат выполнения итерационного метода.
virtual bool MbCurve3D::NearPointProjection ( const MbCartPoint3D pnt,
double &  t,
bool  ext,
MbRect1D tRange = NULL 
) const [virtual]

Найти ближайшую проекцию точки на кривую или ее продолжение по заданному начальному приближению. Если задан диапазон изменения параметра tRange - то надо найти проекцию в заданном диапазоне. Диапазон параметра может выходить за область определения параметра кривой. Используется метод Ньютона.

Аргументы:
[in]pnt- Заданная точка.
[in,out]t- На входе - начальное приближение, на выходе - параметр кривой, соответствующий ближайшей проекции.
[in]ext- Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать).
[in]tRange- Диапазон изменения параметра, в котором надо найти решение.
Возвращает:
true - если найдена проекция, удовлетворяющая всем входным условиям.

Переопределяется в MbArc3D, MbConeSpiral, MbContour3D, MbContourOnSurface, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbPolyline3D, MbReparamCurve3D, MbSurfaceCurve и MbTrimmedCurve3D.

virtual MbeNewtonResult MbCurve3D::IsoclinalNewton ( const MbVector3D dir,
size_t  iterLimit,
double &  t 
) const [virtual]

Найти точку на кривой, в которой касательная параллельна некоторой плоскости, имеющей нормаль dir.

Аргументы:
[in]dir- Вектор, задающий плоскость.
[in]iterLimit- Максимальное количество итераций.
[in,out]t- На входе - начальное приближение, на выходе - параметр точки с искомой касательной.
Возвращает:
Результат выполнения итерационного метода.
virtual void MbCurve3D::GetIsoclinal ( const MbVector3D nor,
SArray< double > &  tIso 
) const [virtual]

Найти точки на кривой, в которых касательная параллельна некоторой плоскости, имеющей нормаль nor.

Аргументы:
[in]nor- Вектор, задающий плоскость.
[out]tIso- Массив параметров точек с искомой касательной.

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

virtual MbCurve* MbCurve3D::GetMap ( const MbMatrix3D into,
MbRect1D pRegion = NULL,
VERSION  version = Math::DefaultMathVersion(),
bool *  coincParams = NULL 
) const [virtual]

Построить плоскую проекцию некоторой части пространственной кривой.

Аргументы:
[in]into- Матрица преобразования из глобальной системы координат в видовую плоскость.
[in]pRegion- Отображаемая часть кривой (paramRegion.x = t1, paramRegion.y = t2), по умолчанию - вся кривая.
[in]version- Версия, по умолчанию - последняя.
[in,out]coincParams- Флаг совпадения параметризации исходной кривой и ее проекции
если coincParams != NULL, функция попытается сделать проекцию с совпадающей параметризацией
если в результате *coincParams = true, у проекции параметризация совпадает с параметрицацией исходной кривой.
Возвращает:
Двумерная проекция кривой.

Переопределяется в MbArc3D, MbBezier3D, MbCharacterCurve3D, MbConeSpiral, MbContour3D, MbContourOnPlane, MbContourOnSurface, MbCubicSpline3D, MbHermit3D, MbLine3D, MbLineSegment3D, MbNurbs3D, MbPlaneCurve, MbPolyline3D, MbReparamCurve3D, MbSilhouetteCurve, MbSurfaceCurve, MbSurfaceIntersectionCurve и MbTrimmedCurve3D.

virtual MbCurve* MbCurve3D::GetMapPsp ( const MbMatrix3D into,
double  zNear,
MbRect1D pRegion = NULL 
) const [virtual]

Построить плоскую проекцию некоторой части пространственной кривой для перспективного отображения.

Аргументы:
[in]into- Матрица преобразования из глобальной системы координат в видовую плоскость.
[in]zNear- Параметр перспективного отображения, равный расстоянию точки наблюдения от видовой плоскости (отрицательный)
[in]pRegion- Отображаемая часть кривой (paramRegion.x = t1, paramRegion.y = t2), по умолчанию - вся кривая.
Возвращает:
Двумерная проекция кривой.

Переопределяется в MbArc3D, MbLine3D, MbLineSegment3D, MbPlaneCurve и MbPolyline3D.

virtual MbCurve* MbCurve3D::GetProjection ( const MbPlacement3D place,
VERSION  version 
) const [virtual]

Построить плоскую проекцию пространственной кривой на плоскость.

Аргументы:
[in]place- Плоскость.
[in]version- Версия математики.
Возвращает:
Двумерная проекция кривой.

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

bool MbCurve3D::IsSpaceNear ( const MbCurve3D curve,
double  eps,
bool  ext,
double  devSag = 5.0 *Math::deviateSag 
) const

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

Аргументы:
[in]curve- Кривая, с которой производится сравнение.
[in]eps- Максимально допустимое расстояние между ближайшими точками двух кривых.
[in]ext- Флаг определяет, будет ли при необходимости продолжена кривая curve. Если ext = true, то кривая может быть продолжена.
[in]devSag- Максимальная величина прогиба.
Возвращает:
true - если кривые метрически близки.
MbCartPoint3D MbCurve3D::GetLimitPoint ( ptrdiff_t  number) const

Вычислить граничную точку.

Аргументы:
[in]number- Номер граничной точки. Значение 1 соответствует начальной точке кривой, 2 - конечной.
Возвращает:
Вычисленная точка.
void MbCurve3D::GetLimitPoint ( ptrdiff_t  number,
MbCartPoint3D pnt 
) const

Вычислить граничную точку.

Аргументы:
[in]number- Номер граничной точки. Значение 1 соответствует начальной точке кривой, 2 - конечной.
[in,out]pnt- Вычисленная точка.
MbeNewtonResult NearestPoints ( const MbCurve3D curve1,
bool  ext1,
const MbCurve3D curve2,
bool  ext2,
double &  t1,
double &  t2,
double &  dmin 
)

Вычислить параметры ближайших точек двух кривых и расстояние между этими точками.

Аргументы:
[in]curve1- Кривая 1.
[in]ext1- Признак поиска на продолжении кривой 1.
[in]curve2- Кривая 2.
[in]ext2- Признак поиска на продолжении кривой 2.
[in]t1- Параметр точки кривой 1.
[in]t2- Параметр точки кривой 2.
[in]dmin- Расстояние между точками кривых.
Возвращает:
Возвращает nr_Success (+1) или nr_Special(0) в случае успешного определения, в случае неудачи возвращает nr_Failure(-1).
MbeNewtonResult CurveCrossNewton ( const MbCurve3D curve1,
bool  ext1,
const MbCurve3D curve2,
bool  ext2,
double  funcEpsilon,
size_t  iterLimit,
double &  t1,
double &  t2 
)

Итерационное определение параметров ближайших точек кривых путём решения уравнений методом Ньютона при заданных начальных приближениях. Если кривые пересекаются и начальные приближения близки к точке пересечения, то будут найдены параметры точки пересечения.
Если в области начальных приближений параметров кривые не пересекаются, то будут найдены параметры точек кривых, касательные в которых ортогональны отрезку, соединяющему найденные точки.

Аргументы:
[in]curve1- Кривая 1.
[in]ext1- Признак поиска на продолжении кривой 1.
[in]curve2- Кривая 2.
[in]ext2- Признак поиска на продолжении кривой 2.
[in]funcEpsilon- Максимальная погрешность расстояния между точками пересечения кривых.
[in]iterLimit- Максимальное число итераций.
[in,out]t1- Параметр кривой 1 для точки пересечения (начальное приближение на входе).
[in,out]t2- Параметр кривой 2 для точки пересечения (начальное приближение на входе).
Возвращает:
Код ошибки: случае успешного определения nr_Success (+1), nr_Special(0) или nr_Failure(-1) - в случае неудачи.
void CalculatePolygon ( const MbCurve3D curve,
const MbStepData stepData,
std::vector< std::pair< double, MbCartPoint3D > > &  paramPoints 
)

Вычислить точки полигона кривой в общем случае.

Аргументы:
[in]curve- Кривая.
[in]sag- Максимальная величина прогиба.
[out]paramPoints- Массив параметров и точек.
virtual void MbFunction::Explore ( double &  t,
bool  ext,
double &  val,
double &  fir,
double *  sec,
double *  thr 
) const [virtual]

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

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

Переопределяется в MdCharacterFunction, MbConstFunction, MbCubicFunction, MbCubicSplineFunction и MbLineFunction.

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