C3D Kernel  102057
Классы | Перечисления | Функции
Алгоритмы в двумерном пространстве
Методы геометрических построений
Граф связей класса Алгоритмы в двумерном пространстве:

Классы

class  MbDistance
 Расстояние между объектами. Подробнее...
class  DiskreteLengthData
 Данные для обеспечения дискретной длины/радиуса/расстояния. Подробнее...
class  MpVertex
 Вершина. Подробнее...
class  MpEdge
 Ребро. Подробнее...
class  MpLoop
 Цикл. Подробнее...
class  MpGraph
 Граф построения контуров. Подробнее...
class  MbBreaksPart
 Часть разрыва. Подробнее...
class  MbBreak
 Разрыв. Подробнее...
class  MbTri
 Tреугольник. Подробнее...
class  MbPlanarGrid
 Tриангуляция двумерной области. Подробнее...
struct  StMLTipParams
 Cтруктура параметров законцовки. Подробнее...
struct  StVertexOfMultilineInfo
 Информация о вершине. Подробнее...
class  MbBreaksRebuild
 Класс для перестроения разрывов. Подробнее...

Перечисления

enum  MbeIntLoopsResult {
  ilr_error = -1, ilr_notIntersect = 0, ilr_firstCurve = 1, ilr_secondCurve = 2,
  ilr_success = 3
}
 Результат пересечения кривых. Подробнее...
enum  EnMLVertexTracingType { mvt_ShearType, mvt_FilletType, mvt_SpecFilletType }
 Тип обхода углов. Подробнее...
enum  EnMLInnerTipType { mit_UndefTip, mit_VerticesTip, mit_LinearTip, mit_ArcTip }
 Тип внутренней законцовки. Подробнее...
enum  EnMLTipType {
  mtt_UndefTip, mtt_LinearTip, mtt_ArcTip, mtt_PolylineTip,
  mtt_ObliqueTip
}
 Тип законцовки. Подробнее...

Функции

MbeItemLocation SecondContourLocation (const MbContour &contour1, const MbContour &contour2, double xEpsilon, double yEpsilon)
 Классифицировать положения второго контура относительно первого.
bool IsSpaceNear (const MbCurve &curve1, const MbCurve &curve2, double xEpsilon, double yEpsilon, double devSag=5.0 *Math::deviateSag)
 Определить, близка ли первая кривая ко второй кривой.
bool ChangeFirstPoint (MbCurve *segment, const MbCartPoint &p1)
 Скорректировать начальную точку.
bool ChangeLastPoint (MbCurve *segment, const MbCartPoint &p2)
 Скорректировать конечную точку.
double CalcAngle0X (double dx, double dy)
 Вычислить угол между прямой и осью 0X.
long double CalcAngle0X (long double dx, long double dy)
 Вычислить угол между прямой и осью 0X.
double CalcAngle0X (const MbCartPoint &p1, const MbCartPoint &p2)
 Вычислить угол между прямой и осью 0X.
void AngleToParam (double dir, bool left, double &t)
 Перевести параметр окружности в параметр кривой.
double CalcAngle3Points (const MbCartPoint &p1, const MbCartPoint &centre, const MbCartPoint &p3)
 Вычислить минимальный угол между прямыми.
MbCartPoint LineSegDivide (const MbCartPoint &p1, const MbCartPoint &p2)
 Разделить отрезок пополам.
MbeState DeleteCurvePart (List< MbCurve > &curveList, const MbCartPoint &pnt, MbCurve *curve, MbCurve *&part2)
 Удалить часть кривой.
MbeState DeleteCurvePart (const MbCartPoint &p1, const MbCartPoint &p2, const MbCartPoint &p3, MbCurve *curve, MbCurve *&part2)
 Удалить часть кривой.
MbeState TrimmCurvePart (List< MbCurve > &curveList, const MbCartPoint &pnt, MbCurve *curve, MbCurve *&part2)
 Оставить часть кривой.
MbeState TrimmCurvePart (const MbCartPoint &p1, const MbCartPoint &p2, const MbCartPoint &p3, MbCurve *curve, MbCurve *&part2)
 Оставить часть кривой.
MbeState JustifyCurve (MbCurve *curve, MbCurve *limitCurve, const MbCartPoint &pnt, MbCurve *&part2)
 Выровнить кривую.
MbeLocation PointLocation (const RPArray< const MbCurve > &limits, const MbCartPoint &pnt)
 Положение точки.
MbeState BreakByClosedCurves (MbCurve &curve, const RPArray< const MbCurve > &limits, bool inside, PArray< MbCurve > &part2, SArray< MbCrossPoint > *cross=NULL, bool *isEqualCurve=NULL, bool cutOnCurve=false)
 Выкинуть части кривой.
MbeState BreakByCurvesArr (MbCurve &curve, const RPArray< const MbCurve > &limits, PArray< MbCurve > &part2)
 Выкинуть части кривой.
MbeState BreakCurve (MbCurve &curve, const MbCartPoint &p1, const MbCartPoint &p2, PArray< MbCurve > &part2)
 Разбить кривую.
MbeState BreakCurveNParts (MbCurve &curve, ptrdiff_t partsCount, const MbCartPoint &p1, PArray< MbCurve > &part2)
 Разбить кривую..
MbeState ExtendCurveToCurve (MbCurve *curve, const MbCurve *limitCurve, const MbCartPoint &pnt)
 Удлиннить кривую.
int Circle2PointsRadius (const MbCartPoint &p1, const MbCartPoint &p2, double radius, MbTempCircle *circle)
 Вычислить центр окружности.
bool CircleCentre3Points (const MbCartPoint &p1, const MbCartPoint &p2, const MbCartPoint &p3, MbCartPoint &centre)
 Вычислить центр и радиус окружности.
bool DistanceCurveCurve (const MbCurve &curve1, const MbCurve &curve2, MbDistance &dmin)
 Вычислить расстояние.
void CalculateUV (const MbCurve &curve1, const MbCurve &curve2, double &u, double &v)
 Рассчитать параметры кривых.
bool PointsOnCurve (ptrdiff_t count, const MbCartPoint &on, const MbCurve &curve, SArray< MbCartPoint > &points, SArray< double > &pars)
 Расставить точки на кривой.
MbCurveFatArcContour (const MbCurve &curve, double eps, double maxRadius, bool mate, VERSION version=Math::DefaultMathVersion())
 Аппроксимация кривой дугами и отрезками.
bool BeginEnvelopeContour (MbCartPoint &insidePnt, const MbCurve *selectCurve, SArray< MbCrossPoint > &cross, MbContour &contour, SArray< MbCrossPoint > &crossRight)
 Найти первый сегмент контура.
MbCurveFindNearestCurve (List< MbCurve > &curveList, MbCartPoint &pnt)
 Найти ближайшую кривую.
void IntersectWithAll (const MbCurve *selectCurve, LIterator< MbCurve > &fromCurve, SArray< MbCrossPoint > &cross, bool self)
 Найти точки пересечения.
void SortCrossPoints (double tProj, const MbCurve *selectCurve, SArray< MbCrossPoint > &cross, SArray< MbCrossPoint > &crossLeft, SArray< MbCrossPoint > &crossRight)
 Сортировать точки пересечения.
void RemoveEquPoints (double tProj, SArray< MbCrossPoint > &cross)
 Удалить совпадающие точки.
void Equid (const MbCurve *curve, double radLeft, double radRight, int side, bool arcMode, bool degState, PArray< MbCurve > &equLeft, PArray< MbCurve > &equRight)
 Построение эквидистантных кривых к кривой.
void MakeHatchingArea (const PArray< MbCurve > &contour, double witdh, PArray< MbCurve > &borders)
 Построение области штриховки кривых.
bool Fillet (MbCurve *curve1, const MbCartPoint &pnt1, bool trim1, MbCurve *curve2, const MbCartPoint &pnt2, bool trim2, double rad, MbeState &state1, MbeState &state2, MbArc *&arc)
 Построить скругление между кривыми.
bool Chamfer (MbCurve *curve1, const MbCartPoint &pnt1, bool trim1, MbCurve *curve2, const MbCartPoint &pnt2, bool trim2, double len, double angle, bool type, MbeState &state1, MbeState &state2, MbLineSegment *&lineseg)
 Построить фаску.
MbeState FilletPolyContour (MbCurve *mc, double rad, bool nodeFlag, const MbCartPoint &pnt, MbContour *&contour)
 Построить скругление.
bool ChamferPolyContour (MbCurve *mc, double l1, double par, bool chamferTypeFlag, bool nodeFlag, const MbCartPoint &pnt)
 Построить фаску.
bool Corner (MbCurve *crv1, MbCurve *crv2, const MbCartPoint &p1, const MbCartPoint &p2)
 Продлить кривые.
void HatchIntersectLine (double y, MbCurve *curve, SArray< MbCartPoint > &crossPnt)
 Найти пересечение с горизонтальной прямой.
void HatchIntersectCircle (MbCurve *circle, MbCurve *curve, SArray< MbCartPoint > &crossPnt)
 Найти пересечение с окружностью.
double CurveRelative (const MbCurve &curve, const MbCartPoint &p1, const MbCartPoint &p2)
 Положение кривой относительно точек оси.
double ContourRelative (const MbCurve &curve, const MbCartPoint &p1, const MbCartPoint &p2, double sag)
 Знак площади тени кривой на отрезок.
DEPRECATE_DECLARE MbeIntLoopsResult BooleanIntLoops (const MbCurve &loop1, bool bOrient1, const MbCurve &loop2, bool bOrient2, RPArray< MbCurve > &intLoops)
 Найти пересечение двух кривых.
bool RemoveContourGaps (MbContour &contour, double accuracy, bool canInsert, bool canReplace)
 Устранить разрывы в контуре.
MpGraphEncloseContoursBuilder (const PArray< MbCurve > &curveList, const MbCartPoint &p, PArray< MbCurve > &usedCurves, PArray< MbContour > &contourArray, double accuracy, bool strict, VERSION version, IProgressIndicator *progInd=NULL)
 Построить контуры вокруг заданной точки.
MpGraphOuterContoursBuilder (const PArray< MbCurve > &curveList, PArray< MbContour > &contourArray, double accuracy, bool strict, VERSION version, IProgressIndicator *progInd=NULL)
 Построить объемлющие контуры на основе заданных кривых.
MpGraphContoursReconstructor (const PArray< MbCurve > &curveList, MpGraph *graph, PArray< MbContour > &contourArray, double accuracy, bool strict, VERSION version, IProgressIndicator *progInd=NULL)
 Перестроить контуры, построенные ранее вокруг точки.
void NearPointProjections (const MbContour &contour, const MbCartPoint &pnt, SArray< double > &tProjs, bool isNear, double mEps=METRIC_REGION)
 Ближайшие проекции на контур.
MbeNewtonResult NearestPoints (const MbCurve &curve1, bool ext1, const MbCurve &curve2, bool ext2, double xEpsilon, double yEpsilon, double &t1, double &t2, double &dmin, VERSION version=Math::DefaultMathVersion())
 Вычислить параметры ближайших точек двух кривых.
double AreaSign (const MbCurve &curve, double sag, bool close)
 Площадь и ориентация замкнутой кривой.
void Swap (MbCartPoint &p1, MbCartPoint &p2)
 Поменять точки.
bool EqualPoints (const MbCartPoint &p1, const MbCartPoint &p2, double eps)
 Проверить точки на равенство.
bool EqualPoints (const MbCartPoint &p1, const MbCartPoint &p2, double xEpsilon, double yEpsilon)
 Проверить точки на равенство.
bool EqualLengths (double lx, double ly, double minLen=METRIC_EPSILON, double minDev=LENGTH_EPSILON)
 Проверить длины на равенство.
bool FilletMultiline (MbMultiline &multiline, double rad, bool nodeFlag, MbCartPoint &pnt, const StVertexOfMultilineInfo &vertInfo)
 Построить скругления мультилинии.
bool ChamferMultiline (MbMultiline &multiline, double len, double par, bool type, bool nodeFlag, MbCartPoint &pnt, const StVertexOfMultilineInfo &vertInfo)
 Построить фаски мультилинии.
void ToTakeIntoCurvesCrvRadii (MbCurve &curve, double angle, double &minPos, double &maxNeg)
 Внеклассные функции расчета/учета радиусов кривизны (реализация в MltLine.cpp)
void GetContoursCrvRadii (MbContour &contour, double angle, double &minPos, double &maxNeg)
 Получить радиусы кривизны контура.
bool SmoothJointSuccessiveCurves (MbCurve &curve1, MbCurve &curve2)
 Состыковать две кривые.
bool BreakMultiline (const MbMultiline &multiline, const MbCartPoint &p1, const MbCartPoint &p2, PArray< MbMultiline > &parts)
 Разбить мультилинию.
bool BreakMultilineNParts (const MbMultiline &multiline, size_t partsCount, const MbCartPoint &point, PArray< MbMultiline > &parts)
 Разбить мультилинию.
void GetCorrectRegions (const RPArray< MbContour > &contours, bool sameContours, RPArray< MbRegion > &regions)
 Получить набор регионов.
void MakeRegions (RPArray< MbContour > &contours, bool useSelfIntCntrs, bool sameContours, RPArray< MbRegion > &regions)
 Разбить набор контуров на группы и построить по ним регионы.
bool CreateBooleanResultRegions (RPArray< MbContour > &contours1, RPArray< MbContour > &contours2, EnRegBoolSide operSide, RPArray< MbRegion > &regions, MbResultType *resInfo=NULL)
 Выполнить булеву операцию над регионами.
bool CreateBooleanResultRegions (MbRegion &region1, MbRegion &region2, EnRegBoolSide operSide, RPArray< MbRegion > &regions, MbResultType *resInfo=NULL)
 Выполнить булеву операцию над регионами.
bool MakeUnionRegions (RPArray< MbRegion > &regions)
 Выполнить объединение регинов.

Перечисления

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

Элементы перечислений:
ilr_error 

Ошибка! Кривые не замкнуты или имеют самопересечения.

ilr_notIntersect 

Области под кривыми не пересекаются (массив кривых пересечения пуст).

ilr_firstCurve 

Пересечением областей является первая кривая (массив кривых пересечения пуст).

ilr_secondCurve 

Пересечением областей является вторая кривая (массив кривых пересечения пуст).

ilr_success 

Произвольное пересечение (одна и более кривых в массиве кривых пересечения).

Тип обхода углов в вершине мультилинии.

Элементы перечислений:
mvt_ShearType 

Обход срезом.

mvt_FilletType 

Обход со скруглением.

mvt_SpecFilletType 

Обход со скруглением заданным радиусом.

Тип внутренней законцовки мультилинии.

Элементы перечислений:
mit_UndefTip 

Законцовки нет.

mit_VerticesTip 

Законцовка между соответствующими вершинами.

mit_LinearTip 

Линейная законцовка.

mit_ArcTip 

Дуговая законцовка.

Тип законцовки мультилинии.

Элементы перечислений:
mtt_UndefTip 

Законцовки нет.

mtt_LinearTip 

Линейная законцовка.

mtt_ArcTip 

Дуговая законцовка.

mtt_PolylineTip 

Ломаная законцовка.

mtt_ObliqueTip 

Наклонная законцовка.


Функции

MbeItemLocation SecondContourLocation ( const MbContour contour1,
const MbContour contour2,
double  xEpsilon,
double  yEpsilon 
)

Классифицировать положения второго контура относительно первого:
iloc_OutOfItem - снаружи,
iloc_OnItem - пересекается,
iloc_InItem - внутри.

Аргументы:
[in]contour1- Первый контур.
[in]contour2- Второй контур.
[in]xEpsilon- Погрешность по x.
[in]yEpsilon- Погрешность по y.
Возвращает:
Возвращает результат классификации положения.
bool IsSpaceNear ( const MbCurve curve1,
const MbCurve curve2,
double  xEpsilon,
double  yEpsilon,
double  devSag = 5.0 *Math::deviateSag 
)

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

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[in]xEpsilon- Близость по x.
[in]yEpsilon- Близость по y.
[in]devSag- Максимальное угловое отклонение при шагании по кривой.
Возвращает:
Возвращает true, если кривые близки.
bool ChangeFirstPoint ( MbCurve segment,
const MbCartPoint p1 
)

Изменить начальную точку кривой на новую.
Меняет начальную точку у кривых типа:
pt_Nurbs, pt_Hermit, pt_Polyline, pt_Bezier, pt_CubicSpline, pt_LineSegment, pt_ReparamCurve,
или у контура pt_Contour, если первый его сегмент одного из перечисленных типов.

Аргументы:
[in]segment- Изменяемая кривая.
[in]p1- Новая начальная точка.
bool ChangeLastPoint ( MbCurve segment,
const MbCartPoint p2 
)

Изменить конечную точку кривой на новую.
Меняет начальную точку у кривых типа:
pt_Nurbs, pt_Hermit, pt_Polyline, pt_Bezier, pt_CubicSpline, pt_LineSegment, pt_ReparamCurve,
или у контура pt_Contour, если последний его сегмент одного из перечисленных типов.

Аргументы:
[in]segment- Изменяемая кривая.
[in]p1- Новая начальная точка.
double CalcAngle0X ( double  dx,
double  dy 
) [inline]

Прямая задается приращениями dx, dy. Угол лежит в интервале [0, 2*M_PI).

Аргументы:
[in]dx- Приращение по X.
[in]dy- Приращение по Y.
Возвращает:
Искомый угол.
long double CalcAngle0X ( long double  dx,
long double  dy 
) [inline]

Прямая задается приращениями dx, dy. Угол лежит в интервале [0, 2*M_PI).

Аргументы:
[in]dx- Приращение по X.
[in]dy- Приращение по Y.
Возвращает:
Искомый угол.
double CalcAngle0X ( const MbCartPoint p1,
const MbCartPoint p2 
) [inline]

Прямая задается двумя точками. Угол лежит в интервале [0, 2*M_PI].

Аргументы:
[in]p1- Первая точка.
[in]p2- Вторая точка.
Возвращает:
Искомый угол.
void AngleToParam ( double  dir,
bool  left,
double &  t 
) [inline]
Аргументы:
[in]dir- Угол между осью X окружности и осью X системы координат.
[in]left- Если true, то левая система координат, иначе - правая.
[out]t- Параметр, который требуется преобразовать.
double CalcAngle3Points ( const MbCartPoint p1,
const MbCartPoint centre,
const MbCartPoint p3 
) [inline]

Прямые задаются следующим образом: l1( centre, p1 ) и l2( centre, p3 ).

Аргументы:
[in]p1- Точка прямой 1.
[in]centre- Общая точка двух прямых.
[in]p3- Точка прямой 2.
Возвращает:
Результат со знаком:
"+" - p3 находится слева от вектора ( centre, p1 ); "-" - p3 находится справа от вектора ( centre, p1 ).
MbCartPoint LineSegDivide ( const MbCartPoint p1,
const MbCartPoint p2 
) [inline]
Аргументы:
[in]p1- Координаты начала отрезка.
[in]p2- Координаты конца отрезка.
Возвращает:
Координаты середины отрезка.
MbeState DeleteCurvePart ( List< MbCurve > &  curveList,
const MbCartPoint pnt,
MbCurve curve,
MbCurve *&  part2 
)

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

Аргументы:
[in]curveList- Список кривых для пересечения.
[in]pnt- Точка, показывающая удаляемую часть кривой.
[in,out]curve- Изменяемая кривая.
[out]part2- Конечный участок измененной кривой, если кривая распалась на две части.
Возвращает:
Состояние кривой после ее модификации.
MbeState DeleteCurvePart ( const MbCartPoint p1,
const MbCartPoint p2,
const MbCartPoint p3,
MbCurve curve,
MbCurve *&  part2 
)

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

Аргументы:
[in]p1- Точка, показывающая первую границу удаляемого участка.
[in]p2- Точка, показывающая вторую границу удаляемого участка.
[in]p3- Точка, показывающая удаляемую часть замкнутой кривой.
[in,out]curve- Изменяемая кривая.
[out]part2- Конечный участок измененной кривой, если кривая распалась на две части.
Возвращает:
Состояние кривой после ее модификации.
MbeState TrimmCurvePart ( List< MbCurve > &  curveList,
const MbCartPoint pnt,
MbCurve curve,
MbCurve *&  part2 
)

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

Аргументы:
[in]curveList- Список кривых для пересечения.
[in]pnt- Точка, показывающая оставляемую часть кривой.
[in,out]curve- Изменяемая кривая.
[in,out]part2- Всегда NULL.
Возвращает:
Состояние кривой после ее модификации.
Предупреждения:
Для внутреннего использования.
MbeState TrimmCurvePart ( const MbCartPoint p1,
const MbCartPoint p2,
const MbCartPoint p3,
MbCurve curve,
MbCurve *&  part2 
)

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

Аргументы:
[in]p1- Точка, показывающая первую границу удаляемого участка.
[in]p2- Точка, показывающая вторую границу удаляемого участка.
[in]p3- Точка, показывающая оставляемую часть замкнутой кривой.
[in,out]curve- Изменяемая кривая.
[in,out]part2- Всегда NULL.
Возвращает:
Состояние кривой после ее модификации.
Предупреждения:
Для внутреннего использования.
MbeState JustifyCurve ( MbCurve curve,
MbCurve limitCurve,
const MbCartPoint pnt,
MbCurve *&  part2 
)

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

Аргументы:
[in,out]curve- Изменяемая кривая.
[in]limitCurve- Граничная кривая для выравнивания.
[in]pnt- Точка для выбора нужной части кривой.
[in,out]part2- Всегда NULL.
Возвращает:
Состояние кривой после ее модификации.
Предупреждения:
Для внутреннего использования.
MbeLocation PointLocation ( const RPArray< const MbCurve > &  limits,
const MbCartPoint pnt 
)

Положение точки относительно замкнутых границ.

Аргументы:
[in]limits- Набор кривых, задающий границы. В совокупности должен представлять собой замкнутые границы.
[in]pnt- Точка для определения положения.
Возвращает:
Положение точки относительно кривой.
MbeState BreakByClosedCurves ( MbCurve curve,
const RPArray< const MbCurve > &  limits,
bool  inside,
PArray< MbCurve > &  part2,
SArray< MbCrossPoint > *  cross = NULL,
bool *  isEqualCurve = NULL,
bool  cutOnCurve = false 
)

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

Аргументы:
[in]curve- Кривая, на которую накладываются границы.
[in]limits- Множество замкнутых кривых-границ.
[in]inside- Признак удаления внутри границ.
[out]part2- Множество оставшихся участков кривой.
[out]cross- Точки пересечения кривой с границами.
[out]isEqualCurve- Признак совпадения разбиваемой кривой с какой-то из присланного массива границ. Имеет смысл при результате dp_NoChanged.
[in]cutOnCurve- Если false, не удаляются части кривой, совпадающие с участками границы.
Возвращает:
Состояние кривой после ее модификации.
MbeState BreakByCurvesArr ( MbCurve curve,
const RPArray< const MbCurve > &  limits,
PArray< MbCurve > &  part2 
)

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

Аргументы:
[in]curve- Кривая, на которую накладываются границы.
[in]limits- Множество кривых для тестирования попадания.
[out]part2- Множество оставшихся кусков кривой.
Возвращает:
Состояние кривой после ее модификации.
MbeState BreakCurve ( MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2,
PArray< MbCurve > &  part2 
)

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

Возвращает:
Состояние кривой после ее модификации.
Аргументы:
[in,out]curve- Разбиваемая кривая.
[in]p1- Первая точка разбиения.
[in]p2- Вторая точка разбиения.
[out]part2- Множество частей кривой.
Возвращает:
Состояние кривой после ее модификации.
MbeState BreakCurveNParts ( MbCurve curve,
ptrdiff_t  partsCount,
const MbCartPoint p1,
PArray< MbCurve > &  part2 
)

Разбить кривую на ресколько равных частей.

Аргументы:
[in,out]curve- Разбиваемая кривая.
[in]partsCount- Количество частей.
[in]p1- Одна из точек разбиения.
[out]part2- Множество частей кривой.
Возвращает:
Состояние кривой после ее модификации.
MbeState ExtendCurveToCurve ( MbCurve curve,
const MbCurve limitCurve,
const MbCartPoint pnt 
)

Удлиннить кривую curve до кривой-границы limitCurve с конца ближайшего к точке pnt

Аргументы:
[in,out]curve- Изменяемая кривая.
[in]limitCurve- Кривая-граница.
[in]pnt- Точка, показывающая удлинняемый конец кривой.
Возвращает:
Состояние кривой после ее модификации.
int Circle2PointsRadius ( const MbCartPoint p1,
const MbCartPoint p2,
double  radius,
MbTempCircle circle 
)

Вычислить центр окружности по двум точкам и радиусу.

Аргументы:
[in]p1- Первая точка.
[in]p2- Вторая точка.
[in]radius- Радиус
[out]circle- Результат - массив временных окружностей.
Возвращает:
Количество элементов в массиве circle.
bool CircleCentre3Points ( const MbCartPoint p1,
const MbCartPoint p2,
const MbCartPoint p3,
MbCartPoint centre 
)

Вычислить центр и радиус окружности по трем точкам.

Аргументы:
[in]p1- Первая точка.
[in]p2- Вторая точка.
[in]p3- Третья точка.
[out]centre- Результат - центр окружности.
Возвращает:
true в случае возможности построения.
bool DistanceCurveCurve ( const MbCurve curve1,
const MbCurve curve2,
MbDistance dmin 
)

Вычислить расстояние между двумя кривыми.

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]dmin- Результат - расстояние между кривыми.
Возвращает:
true - кривые не пересекаются; false - кривые пересекаются.
void CalculateUV ( const MbCurve curve1,
const MbCurve curve2,
double &  u,
double &  v 
)

Рассчитать параметры кривых для минимального расстояния.

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]u- Параметр на первой кривой.
[out]v- Параметр на второй кривой.
bool PointsOnCurve ( ptrdiff_t  count,
const MbCartPoint on,
const MbCurve curve,
SArray< MbCartPoint > &  points,
SArray< double > &  pars 
)

Расставить заданное количество точек на кривой.
Точки можно расставить только на ограниченную кривую.

Аргументы:
[in]count- Количество точек.
[in]on- Точка, проекция которой будет добавлена в результат в случае замкнутой кривой.
[in]curve- Кривая.
[out]points- Точки на кривой.
[out]pars- Параметры на кривой.
Возвращает:
true, если точки были насчитаны.
MbCurve* FatArcContour ( const MbCurve curve,
double  eps,
double  maxRadius,
bool  mate,
VERSION  version = Math::DefaultMathVersion() 
)

Аппроксимация кривой дугами и отрезками.

Аргументы:
[in]curve- Кривая для аппроксимации.
[in]eps- Метрическая погрешность.
[in]maxRadius- Максимальный радиус аппроксимации.
[in]mate- Флаг аппроксимации с учетом сопряжений.
[in]version- Версия построения.
bool BeginEnvelopeContour ( MbCartPoint insidePnt,
const MbCurve selectCurve,
SArray< MbCrossPoint > &  cross,
MbContour contour,
SArray< MbCrossPoint > &  crossRight 
)

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

Аргументы:
[in]insidePnt- Точка, вокруг которой надо построить контур.
[in]selectCurve- Ближайшая кривая.
[in]cross- Множество точек пересечения ближайшей кривой.
[out]contour- Контур для добавления сегмента.
[out]crossRight- Узел - массив точек пересечения кривой в сторону продолжения конутра.
Возвращает:
true, если сегмент добавлен.
MbCurve* FindNearestCurve ( List< MbCurve > &  curveList,
MbCartPoint pnt 
)

Найти ближайшую к точке кривую.

Аргументы:
[in]curveList- Список кривых.
[in]pnt- Точка.
Возвращает:
Ближайшую кривую.
void IntersectWithAll ( const MbCurve selectCurve,
LIterator< MbCurve > &  fromCurve,
SArray< MbCrossPoint > &  cross,
bool  self 
)

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

Аргументы:
[in]selectCurve- Кривая.
[in]fromCurve- Итератор списка кривых.
[out]cross- Точки пересечения.
[in]self- Флаг поиска самопересечений.
void SortCrossPoints ( double  tProj,
const MbCurve selectCurve,
SArray< MbCrossPoint > &  cross,
SArray< MbCrossPoint > &  crossLeft,
SArray< MbCrossPoint > &  crossRight 
)

Сортировать точки пересечения по отношению к точки проекции выбранной кривой.

Аргументы:
[in]tProj- Параметр проекции на кривую.
[in]selectCurve- Кривая.
[in,out]cross- Множество точек пересечения для сортировки.
[out]crossLeft- Узел точек пересечения слева от проекции.
[out]crossRight- Узел точек пересечения справа от проекции.
void RemoveEquPoints ( double  tProj,
SArray< MbCrossPoint > &  cross 
)

Удалить из массива точки совпадающие с точкой проекции, заданной параметром.
Если все точки совпадают с точкой проекции, то они не будут удалены.

Аргументы:
[in]tProj- Параметр проекции.
[in,out]cross- Множество точек пересечения.
void Equid ( const MbCurve curve,
double  radLeft,
double  radRight,
int  side,
bool  arcMode,
bool  degState,
PArray< MbCurve > &  equLeft,
PArray< MbCurve > &  equRight 
)

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

Аргументы:
[in]curve- Исходная кривая.
[in]radLeft- Радиус эквидистанты слева по направлению.
[in]radRight- Радиус эквидистанты справа по направлению.
[in]side- Признак, с какой стороны строить:
0 - слева по направлению,
1 - справа по направлению,
2 - с двух сторон.
[in]arcMode- Cпособ обхода углов:
true - дугой, false - срезом.
[in]degState- Признак разрешения вырожденных сегментов:
0 - вырожденные сегменты запрещены,
1 - вырожденные сегменты разрешены.
[out]equLeft- Множество контуров слева.
[out]equRight- Множество контуров справа.
void MakeHatchingArea ( const PArray< MbCurve > &  contour,
double  witdh,
PArray< MbCurve > &  borders 
)

Построение штриховки заданной ширины внутри или около кривых.

Аргументы:
[in]contour- Исходная кривые.
[in]witdh- Ширина штриховки.
[out]borders- Множество линий штриховки и границ штриховки.
bool Fillet ( MbCurve curve1,
const MbCartPoint pnt1,
bool  trim1,
MbCurve curve2,
const MbCartPoint pnt2,
bool  trim2,
double  rad,
MbeState state1,
MbeState state2,
MbArc *&  arc 
)

Построить скругление постоянным радиусом между двумя кривыми.

Аргументы:
[in]curve1- Первая кривая.
[in]pnt1- Точка вблизи первой кривой.
[in]trim1- Признак усечения первой кривой.
[in]curve2- Вторая кривая.
[in]pnt2- Точка вблизи второй кривой.
[in]trim2- Признак усечения второй кривой.
[in]rad- Радиус скругления.
[out]state1- Состояние первой кривой.
[out]state2- Состояние второй кривой.
[out]arc- Дуга скругления.
Возвращает:
true в случае успешной операции.
bool Chamfer ( MbCurve curve1,
const MbCartPoint pnt1,
bool  trim1,
MbCurve curve2,
const MbCartPoint pnt2,
bool  trim2,
double  len,
double  angle,
bool  type,
MbeState state1,
MbeState state2,
MbLineSegment *&  lineseg 
)

Построить фаску между двумя кривыми.

Аргументы:
[in]curve1- Первая кривая.
[in]pnt1- Точка вблизи первой кривой.
[in]trim1- Признак усечения первой кривой.
[in]curve2- Вторая кривая.
[in]pnt2- Точка вблизи второй кривой.
[in]trim2- Признак усечения второй кривой.
[in]len- Размер фаски на первой кривой.
[in]angle- Угол фаски или размер фаски на второй кривой в зависимости от типа построения.
[in]type- Тип построения фаски:
true - размер + угол,
false - размер + размер.
[out]state1- Состояние первой кривой.
[out]state2- Состояние второй кривой.
[out]lineseg- Отрезок фаски.
Возвращает:
true в случае успешной операции.
MbeState FilletPolyContour ( MbCurve mc,
double  rad,
bool  nodeFlag,
const MbCartPoint pnt,
MbContour *&  contour 
)

Построить скругление полилинии или контура.
Изменяемая кривая mc должна быть полилинией или контуром.

Аргументы:
[in]mc- Изменяемая кривая.
[in]rad- Радиус скругления.
[in]nodeFlag- Флаг выбора узлов скругления:
true - скругление во всех узлах,
false - скругление ближайшего узла.
[in]pnt- Точка для выбора ближайшего узла.
[out]contour- Контур, построенный по полилинии.
Возвращает:
Состояние кривой после её модификации.
bool ChamferPolyContour ( MbCurve mc,
double  l1,
double  par,
bool  chamferTypeFlag,
bool  nodeFlag,
const MbCartPoint pnt 
)

Построить фаску полилинии или контура.
Изменяемая кривая mc должна быть полилинией или контуром.

Аргументы:
[in]mc- Изменяемая кривая.
[in]l1- Размер фаски.
[in]par- Угол фаски или размер фаски в зависимости от типа построения.
[in]chamferTypeFlag- Тип построения фаски:
true - размер + угол,
false - размер + размер.
[in]nodeFlag- Флаг выбора узлов скругления:
true - скругление во всех узлах,
false - скругление ближайшего узла.
[in]pnt- Точка для выбора ближайшего узла.
bool Corner ( MbCurve crv1,
MbCurve crv2,
const MbCartPoint p1,
const MbCartPoint p2 
)

Продлить две кривые до точки пересечения.

Аргументы:
[in,out]crv1- Первая кривая
[in,out]crv2- Вторая кривая.
[in]p1- Точка для выбора места пересечения.
[in]p2- Точка для выбора места пересечения.
void HatchIntersectLine ( double  y,
MbCurve curve,
SArray< MbCartPoint > &  crossPnt 
)

Найти пересечение кривой с горизонтальной прямой. Для штриховки.

Аргументы:
[in]y- Координата у горизонтальной прямой.
[in]curve- Кривая.
[out]crossPnt- Точки пересечения.
void HatchIntersectCircle ( MbCurve circle,
MbCurve curve,
SArray< MbCartPoint > &  crossPnt 
)

Найти пересечение с окружностью.
Для штриховки.

Аргументы:
[in]circle- Окружность.
[in]curve- Кривая.
[out]crossPnt- Точки пересечения.
double CurveRelative ( const MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2 
)

Для определения направления оси вращения.

Аргументы:
[in]curve- Исходная кривая.
[in]p1- Первая точка оси.
[in]p2- Вторая точка оси.
Возвращает:
0 в случае сбоя при работе программы,
иначе возвращается векторное произведение нормализованного вектора оси (p1, p2) и вектора (p1, w), где w - координаты центра тяжести кривой.
double ContourRelative ( const MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2,
double  sag 
)

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

Аргументы:
[in]curve- Исходная кривая.
[in]p1- Первая точка отрезка.
[in]p2- Вторая точка отрезка.
[in]sag- Угол отклонения. Используется для расчета шага по кривой.
Возвращает:
Площадь тени со знаком.
DEPRECATE_DECLARE MbeIntLoopsResult BooleanIntLoops ( const MbCurve loop1,
bool  bOrient1,
const MbCurve loop2,
bool  bOrient2,
RPArray< MbCurve > &  intLoops 
)

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

Аргументы:
[in]iCheck- Признак проверки кривых на касание вершин.
[in]loop1- Первая замкнутая кривая.
[in]bOrient1- Ориентация первой замкнутой кривой:
true - ее областью считаем внутренность,
false - внешность.
[in]loop2- Вторая замкнутая кривая.
[in]bOrient2- Ориентация второй замкнутой кривой:
true - ее областью считаем внутренность,
false - внешность.
[out]intLoops- Массив кривых пересечения.
Внимание:
Устаревшая функция.
Возвращает:
Код результата пересечения.
bool RemoveContourGaps ( MbContour contour,
double  accuracy,
bool  canInsert,
bool  canReplace 
)

Устранить разрывы в контуре.

Аргументы:
[in]contour- Контур.
[in]accuracy- Ограничение по размеру разрыва (для вставки сегмента и поиска пересечения соседей.
[in]canInsert- Можно ли вставлять сегменты.
[in]canReplace- Можно ли заменять сегменты.
Возвращает:
true, если контур изменился.
MpGraph* EncloseContoursBuilder ( const PArray< MbCurve > &  curveList,
const MbCartPoint p,
PArray< MbCurve > &  usedCurves,
PArray< MbContour > &  contourArray,
double  accuracy,
bool  strict,
VERSION  version,
IProgressIndicator progInd = NULL 
)

Построить контуры вокруг заданной точки. Строится один внешний и несколько внутренних контуров с одним уровнем вложенности. На вход не должны приходить составные кривые (контуры и ломаные).

Аргументы:
[in]curveList- Список кривых для построения.
[in]p- Точка, вокруг которой строятся контуры.
[out]usedCurves- Использованные кривые.
[out]contourArray- Результат построения - набор контуров.
[in]accuracy- Погрешность определения пересечения и близости кривых.
[in]strict- Если false, сборка производится с загрубленной точностью.
[in]version- Версия построения. Последняя версия Math::DefaultMathVersion().
[in]progInd- Индикатора прогресса выполнения.
Возвращает:
Граф построения контуров.
Предупреждения:
При использовании функций EncloseContoursBuilder, OuterContoursBuilder, ContoursReconstructor состояние флага strict и версия version должно использоваться одно в одном процессе обработки.
MpGraph* OuterContoursBuilder ( const PArray< MbCurve > &  curveList,
PArray< MbContour > &  contourArray,
double  accuracy,
bool  strict,
VERSION  version,
IProgressIndicator progInd = NULL 
)

Построить объемлющие контуры на основе заданных кривых. Строятся внешние и внутренние контуры с произвольным уровнем вложенности. На вход не должны приходить составные кривые (контуры и ломаные).

Аргументы:
[in]curveList- Список кривых для построения.
[out]contourArray- Результат построения - набор контуров.
[in]accuracy- Погрешность определения пересечения и близости кривых.
[in]strict- Если false, сборка производится с загрубленной точностью.
[in]version- Версия построения. Последняя версия Math::DefaultMathVersion().
[in]progInd- Индикатора прогресса выполнения.
Возвращает:
Граф построения контуров.
Предупреждения:
При использовании функций EncloseContoursBuilder, OuterContoursBuilder, ContoursReconstructor состояние флага strict и версия version должно использоваться одно в одном процессе обработки.
MpGraph* ContoursReconstructor ( const PArray< MbCurve > &  curveList,
MpGraph graph,
PArray< MbContour > &  contourArray,
double  accuracy,
bool  strict,
VERSION  version,
IProgressIndicator progInd = NULL 
)

Перестроить контуры, построенные ранее вокруг точки. Функция перестраивает граф, построенный функцией EncloseContoursBuilder.

Аргументы:
[in]curveList- Список кривых для построения.
[in]graph- Граф для перестроения.
[out]contourArray- Результат построения - набор контуров.
[in]accuracy- Погрешность определения пересечения и близости кривых.
[in]strict- Если false, сборка производится с загрубленной точностью.
[in]version- Версия построения. Последняя версия Math::DefaultMathVersion().
[in]progInd- Индикатора прогресса выполнения.
Возвращает:
Граф построения контуров.
Предупреждения:
При использовании функций EncloseContoursBuilder, OuterContoursBuilder, ContoursReconstructor состояние флага strict и версия version должно использоваться одно в одном процессе обработки.
void NearPointProjections ( const MbContour contour,
const MbCartPoint pnt,
SArray< double > &  tProjs,
bool  isNear,
double  mEps = METRIC_REGION 
)

Ближайшие проекции точки на контур.

Аргументы:
[in]contour- Контур.
[in]pnt- Проецируемая точка.
[out]tProjs- Параметры ближайших проекций.
[in]isNear- Выбрать только проекции, находящиеся от проецируемой точки не дальше заданной точности.
[in]mEps- Точность выбора ближайших точек.
MbeNewtonResult NearestPoints ( const MbCurve curve1,
bool  ext1,
const MbCurve curve2,
bool  ext2,
double  xEpsilon,
double  yEpsilon,
double &  t1,
double &  t2,
double &  dmin,
VERSION  version = Math::DefaultMathVersion() 
)

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

Аргументы:
[in]curve1- Кривая 1.
[in]ext1- Признак поиска на продолжении кривой 1.
[in]curve2- Кривая 2.
[in]ext2- Признак поиска на продолжении кривой 2.
[in]xEpsilon- Погрешность по X.
[in]yEpsilon- Погрешность по Y.
[out]t1- Параметр точки кривой 1.
[out]t2- Параметр точки кривой 2.
[out]dmin- Расстояние между точками кривых.
[in]version- Версия.
Возвращает:
Возвращает nr_Success (+1) или nr_Special(0) в случае успешного определения, в случае неудачи возвращает nr_Failure(-1).
double AreaSign ( const MbCurve curve,
double  sag,
bool  close 
)

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

Аргументы:
[in]curve- Исходная кривая.
[in]sag- Угловое отклонение касательной кривой в соседних точках интегрирования, используется для расчета шага по кривой.
[in]close- Флаг замкнутости.
Возвращает:
Площадь замкнутой кривой со знаком (ориентацией).
void Swap ( MbCartPoint p1,
MbCartPoint p2 
) [inline]
Аргументы:
[in]p1- Первая точка.
[in]p2- Вторая точка.
bool EqualPoints ( const MbCartPoint p1,
const MbCartPoint p2,
double  eps 
) [inline]
Аргументы:
[in]p1- Первая декартова точка.
[in]p2- Вторая декартова точка.
[in]eps- Метрическая погрешность совпадения точек.
Возвращает:
true, если точки совпадают,
иначе false.
bool EqualPoints ( const MbCartPoint p1,
const MbCartPoint p2,
double  xEpsilon,
double  yEpsilon 
) [inline]
Аргументы:
[in]p1- Первая декартова точка.
[in]p2- Вторая декартова точка.
[in]xEpsilon- Метрическая погрешность совпадения точек вдоль оси X.
[in]yEpsilon- Метрическая погрешность совпадения точек вдоль оси Y.
Возвращает:
true, если точки совпадают,
иначе false.
bool EqualLengths ( double  lx,
double  ly,
double  minLen = METRIC_EPSILON,
double  minDev = LENGTH_EPSILON 
) [inline]
Аргументы:
[in]lx,ly- Сравниваемые длины.
[in]minLen- Минимально возможная длина.
[in]minDev- Метрическая погрешность равенства длин.
Возвращает:
true, если длины равны,
иначе false.
bool FilletMultiline ( MbMultiline multiline,
double  rad,
bool  nodeFlag,
MbCartPoint pnt,
const StVertexOfMultilineInfo vertInfo 
)

Построить скругления базовой кривой мультилинии.

Аргументы:
[in]multiline- Изменяемая мультилиния.
[in]rad- Радиус скругления.
[in]nodeFlag- Флаг выбора скругляемых вершин:
true - скругление всех вершин мультилинии,
false - скругление ближайшей вершины к точке pnt.
[in]pnt- Точка для указания нужной вершины.
[in]vertInfo- Информация для новых вершин мультилинии.
bool ChamferMultiline ( MbMultiline multiline,
double  len,
double  par,
bool  type,
bool  nodeFlag,
MbCartPoint pnt,
const StVertexOfMultilineInfo vertInfo 
)

Построить фаски базовой кривой мультилинии.

Аргументы:
[in]multiline- Изменяема мультилиния.
[in]len- Длина фаски.
[in]par- Параметр в зависимости от типа type:
если type = true, par - угол,
если type = false, par - размер.
[in]type- Тип задания фаски:
true - фаска задана как размер + угол,
false - фаска задана как размер + размер.
[in]nodeFlag- Флаг выбора обрабатываемых вершин:
true - фаска между каждыми двумя соседними сегментами мультилинии,
false - фаска между двумя соседними сегментами мультилинии, примыкающими к ближайшей к точке pnt вершине.
[in]pnt- Точка для указания нужной пары сегментов.
[in]vertInfo- Информация для новых вершин мультилинии.
void ToTakeIntoCurvesCrvRadii ( MbCurve curve,
double  angle,
double &  minPos,
double &  maxNeg 
)

Учесть радиусы кривизны кривой.

Учесть минимальный положительный и максимальный отрицательный радиусы кривизны кривой.
Для внутреннего использования.

Аргументы:
[in]curve- Кривая мультилинии.
[in]angle- Угловая толерантность.
[in,out]minPos- Радиус кривой, если он меньше текущего значения переменной minPos.
[in,out]maxNeg- Радиус кривой, если он больше текущего значения переменной minPos.
void GetContoursCrvRadii ( MbContour contour,
double  angle,
double &  minPos,
double &  maxNeg 
)

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

Аргументы:
[in]contour- Контур.
[in]angle- Угловая толерантность.
[out]minPos- Минимальный радиус сегмента контура.
[out]maxNeg- Максимальный радиус сегмента контура.
bool SmoothJointSuccessiveCurves ( MbCurve curve1,
MbCurve curve2 
)

Гладко состыковать две последовательные кривые.
Для внутреннего использования.

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
Возвращает:
true, если хотя бы одна кривая была изменена.
bool BreakMultiline ( const MbMultiline multiline,
const MbCartPoint p1,
const MbCartPoint p2,
PArray< MbMultiline > &  parts 
)

Разбить мультилинию на две части.

Аргументы:
[in]multiline- Разбиваемая мультилиния.
[in]p1- Точка разбиения или, если мультилиния замкнута, начальная точка для новой мультилинии.
[in]p2- Если мультилиния замкнута, то конечная точка для новой мультилинии.
[out]parts- Массив полученных участков (2 элемента).
bool BreakMultilineNParts ( const MbMultiline multiline,
size_t  partsCount,
const MbCartPoint point,
PArray< MbMultiline > &  parts 
)

Разбить мультилинию на N равных частей.

Аргументы:
[in]multiline- Разбиваемая мультилиния.
[in]partsCount- Количество частей.
[in]point- Ограничивающая точка для замкнутой мультилинии.
[out]parts- Массив полученных участков (partsCount элементов).
void GetCorrectRegions ( const RPArray< MbContour > &  contours,
bool  sameContours,
RPArray< MbRegion > &  regions 
)

Получить набор корректных регионов из произвольного набора контуров.
Из присланных контуров отбираются те, которые подходят для построения региона - замкнутые несамопересекающиеся и без разрывов.

Аргументы:
[in]contours- Набор контуров.
[in]sameContours- Флаг использования оригиналов контуров при создании регионов.
[out]regions- Результат - набор регионов.
void MakeRegions ( RPArray< MbContour > &  contours,
bool  useSelfIntCntrs,
bool  sameContours,
RPArray< MbRegion > &  regions 
)

Разбить произвольный набор контуров на связные группы контуров и построить по ним регионы.
Для любого контура, принадлежащего связной группе, этой же группе принадлежат все контуры:
1) совпадающие с данным контуром
2) пересекающие данный контур
3) содержащие данный контур
4) содержащиеся в данном контуре
Группы возвращаются в виде регионов (возможно, некорректных).

Аргументы:
[in]contours- Набор контуров для разбиения на группы.
[in]useSelfIntCntrs- Если true, то самопересекающиеся контуры образуют отдельные группы (некорректные регионы), иначе - такие контуры вообще не используются.
[in]sameContours- Флаг использования оригиналов контуров при создании регионов.
[out]regions- Результат - набор регионов.
bool CreateBooleanResultRegions ( RPArray< MbContour > &  contours1,
RPArray< MbContour > &  contours2,
EnRegBoolSide  operSide,
RPArray< MbRegion > &  regions,
MbResultType resInfo = NULL 
)

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

Аргументы:
[in]contours1- Первый набор контуров.
[in]contours2- Второй набор контуров.
[in]operSide- Тип булевой операции.
[out]regions- Результат - набор регионов.
[out]resInfo- Код результата операции.
Возвращает:
true в случае успеха операции.
bool CreateBooleanResultRegions ( MbRegion region1,
MbRegion region2,
EnRegBoolSide  operSide,
RPArray< MbRegion > &  regions,
MbResultType resInfo = NULL 
)

Выполнить булеву операцию над двумя регионами.

Аргументы:
[in]region1- Первый регион.
[in]region2- Второй регион.
[in]operSide- Тип булевой операции.
[out]regions- Результат - набор регионов.
[out]resInfo- Код результата операции.
Возвращает:
true в случае успеха операции.
bool MakeUnionRegions ( RPArray< MbRegion > &  regions)

Выполнить объединение регинов.

Аргументы:
[in,out]regions- Начальные и конечные регионы.
Возвращает:
true, если какие-то регионы были объединены.
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы