C3D Toolkit  Kernel - 106477, Vision - 190409.106477
+ Граф связей класса Алгоритмы в двумерном пространстве:

Классы

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 c3d::CalcAngle0X (double dx, double dy)
 Вычислить угол между прямой и осью 0X. Подробнее...
 
long double c3d::CalcAngle0X (long double dx, long double dy)
 Вычислить угол между прямой и осью 0X. Подробнее...
 
double c3d::CalcAngle0X (const MbCartPoint &p1, const MbCartPoint &p2)
 Вычислить угол между прямой и осью 0X. Подробнее...
 
void c3d::AngleToParam (double dir, bool left, double &t)
 Перевести параметр окружности в параметр кривой. Подробнее...
 
double c3d::CalcAngle3Points (const MbCartPoint &p1, const MbCartPoint &centre, const MbCartPoint &p3)
 Вычислить минимальный угол между прямыми. Подробнее...
 
MbCartPoint c3d::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 RPArray< MbCurve > &curveList, const MbCartPoint &p, PArray< MbCurve > &usedCurves, PArray< MbContour > &contourArray, double accuracy, bool strict, VERSION version, IProgressIndicator *progInd=NULL)
 Построить контуры вокруг заданной точки. Подробнее...
 
MpGraphOuterContoursBuilder (const RPArray< MbCurve > &curveList, PArray< MbContour > &contourArray, double accuracy, bool strict, VERSION version, IProgressIndicator *progInd=NULL)
 Построить объемлющие контуры на основе заданных кривых. Подробнее...
 
MpGraphContoursReconstructor (const RPArray< 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)
 Площадь и ориентация замкнутой кривой. Подробнее...
 
template<class Point >
bool c3d::EqualPoints (const Point &p1, const Point &p2, double xEpsilon, double yEpsilon)
 Проверить точки на равенство. Подробнее...
 
template<class Vector >
bool c3d::EqualVectors (const Vector &p1, const Vector &p2, double xEpsilon, double yEpsilon)
 Проверить векторы на равенство с заданной точностью. Подробнее...
 
bool c3d::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, const MbRegionBooleanParams &operParams, RPArray< MbRegion > &regions, MbResultType *resInfo=NULL)
 Выполнить булеву операцию над регионами. Подробнее...
 
bool CreateBooleanResultRegions (MbRegion &region1, MbRegion &region2, const MbRegionBooleanParams &operParams, RPArray< MbRegion > &regions, MbResultType *resInfo=NULL)
 Выполнить булеву операцию над регионами. Подробнее...
 
bool MakeUnionRegions (RPArray< MbRegion > &regions, bool allowSelfTouch=true, bool mergeCurves=true)
 Выполнить объединение регинов. Подробнее...
 

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

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

◆ MbeIntLoopsResult

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

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

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

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

ilr_notIntersect 

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

ilr_firstCurve 

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

ilr_secondCurve 

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

ilr_success 

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

◆ EnMLVertexTracingType

Тип обхода углов.

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

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

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

mvt_FilletType 

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

mvt_SpecFilletType 

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

◆ EnMLInnerTipType

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

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

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

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

mit_VerticesTip 

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

mit_LinearTip 

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

mit_ArcTip 

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

◆ EnMLTipType

Тип законцовки.

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

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

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

mtt_LinearTip 

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

mtt_ArcTip 

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

mtt_PolylineTip 

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

mtt_ObliqueTip 

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

Функции

◆ SecondContourLocation()

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.
Возвращает
Возвращает результат классификации положения.

◆ IsSpaceNear()

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, если кривые близки.

◆ ChangeFirstPoint()

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- Новая начальная точка.

◆ ChangeLastPoint()

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- Новая начальная точка.

◆ CalcAngle0X() [1/3]

double c3d::CalcAngle0X ( double  dx,
double  dy 
)
inline

Вычислить угол между прямой и осью 0X.

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

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

◆ CalcAngle0X() [2/3]

long double c3d::CalcAngle0X ( long double  dx,
long double  dy 
)
inline

Вычислить угол между прямой и осью 0X.

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

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

◆ CalcAngle0X() [3/3]

double c3d::CalcAngle0X ( const MbCartPoint p1,
const MbCartPoint p2 
)
inline

Вычислить угол между прямой и осью 0X.

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

Аргументы
[in]p1- Первая точка.
[in]p2- Вторая точка.
Возвращает
Искомый угол.

◆ AngleToParam()

void c3d::AngleToParam ( double  dir,
bool  left,
double &  t 
)
inline

Перевести параметр окружности в параметр кривой.

Аргументы
[in]dir- Угол между осью X окружности и осью X системы координат.
[in]left- Если true, то левая система координат, иначе - правая.
[out]t- Параметр, который требуется преобразовать.

◆ CalcAngle3Points()

double c3d::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 ).

◆ LineSegDivide()

MbCartPoint c3d::LineSegDivide ( const MbCartPoint p1,
const MbCartPoint p2 
)
inline

Разделить отрезок пополам.

Аргументы
[in]p1- Координаты начала отрезка.
[in]p2- Координаты конца отрезка.
Возвращает
Координаты середины отрезка.

◆ DeleteCurvePart() [1/2]

MbeState DeleteCurvePart ( List< MbCurve > &  curveList,
const MbCartPoint pnt,
MbCurve curve,
MbCurve *&  part2 
)

Удалить часть кривой.

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

Аргументы
[in]curveList- Список кривых для пересечения.
[in]pnt- Точка, показывающая удаляемую часть кривой.
[in,out]curve- Изменяемая кривая.
[out]part2- Конечный участок измененной кривой, если кривая распалась на две части.
Возвращает
Состояние кривой после ее модификации.

◆ DeleteCurvePart() [2/2]

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- Конечный участок измененной кривой, если кривая распалась на две части.
Возвращает
Состояние кривой после ее модификации.

◆ TrimmCurvePart() [1/2]

MbeState TrimmCurvePart ( List< MbCurve > &  curveList,
const MbCartPoint pnt,
MbCurve curve,
MbCurve *&  part2 
)

Оставить часть кривой.

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

Аргументы
[in]curveList- Список кривых для пересечения.
[in]pnt- Точка, показывающая оставляемую часть кривой.
[in,out]curve- Изменяемая кривая.
[in,out]part2- Всегда NULL.
Возвращает
Состояние кривой после ее модификации.
Предупреждения
Для внутреннего использования.

◆ TrimmCurvePart() [2/2]

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.
Возвращает
Состояние кривой после ее модификации.
Предупреждения
Для внутреннего использования.

◆ JustifyCurve()

MbeState JustifyCurve ( MbCurve curve,
MbCurve limitCurve,
const MbCartPoint pnt,
MbCurve *&  part2 
)

Выровнить кривую.

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

Аргументы
[in,out]curve- Изменяемая кривая.
[in]limitCurve- Граничная кривая для выравнивания.
[in]pnt- Точка для выбора нужной части кривой.
[in,out]part2- Всегда NULL.
Возвращает
Состояние кривой после ее модификации.
Предупреждения
Для внутреннего использования.

◆ PointLocation()

MbeLocation PointLocation ( const RPArray< const MbCurve > &  limits,
const MbCartPoint pnt 
)

Положение точки.

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

Аргументы
[in]limits- Набор кривых, задающий границы. В совокупности должен представлять собой замкнутые границы.
[in]pnt- Точка для определения положения.
Возвращает
Положение точки относительно кривой.

◆ BreakByClosedCurves()

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, не удаляются части кривой, совпадающие с участками границы.
Возвращает
Состояние кривой после ее модификации.

◆ BreakByCurvesArr()

MbeState BreakByCurvesArr ( MbCurve curve,
const RPArray< const MbCurve > &  limits,
PArray< MbCurve > &  part2 
)

Выкинуть части кривой.

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

Аргументы
[in]curve- Кривая, на которую накладываются границы.
[in]limits- Множество кривых для тестирования попадания.
[out]part2- Множество оставшихся кусков кривой.
Возвращает
Состояние кривой после ее модификации.

◆ BreakCurve()

MbeState BreakCurve ( MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2,
PArray< MbCurve > &  part2 
)

Разбить кривую.

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

Возвращает
Состояние кривой после ее модификации.
Аргументы
[in,out]curve- Разбиваемая кривая.
[in]p1- Первая точка разбиения.
[in]p2- Вторая точка разбиения.
[out]part2- Множество частей кривой.
Возвращает
Состояние кривой после ее модификации.

◆ BreakCurveNParts()

MbeState BreakCurveNParts ( MbCurve curve,
ptrdiff_t  partsCount,
const MbCartPoint p1,
PArray< MbCurve > &  part2 
)

Разбить кривую..

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

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

◆ ExtendCurveToCurve()

MbeState ExtendCurveToCurve ( MbCurve curve,
const MbCurve limitCurve,
const MbCartPoint pnt 
)

Удлиннить кривую.

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

Аргументы
[in,out]curve- Изменяемая кривая.
[in]limitCurve- Кривая-граница.
[in]pnt- Точка, показывающая удлинняемый конец кривой.


Возвращает
Состояние кривой после ее модификации.

◆ Circle2PointsRadius()

int Circle2PointsRadius ( const MbCartPoint p1,
const MbCartPoint p2,
double  radius,
MbTempCircle circle 
)

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

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

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

◆ CircleCentre3Points()

bool CircleCentre3Points ( const MbCartPoint p1,
const MbCartPoint p2,
const MbCartPoint p3,
MbCartPoint centre 
)

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

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

Аргументы
[in]p1- Первая точка.
[in]p2- Вторая точка.
[in]p3- Третья точка.
[out]centre- Результат - центр окружности.
Возвращает
true в случае возможности построения.

◆ DistanceCurveCurve()

bool DistanceCurveCurve ( const MbCurve curve1,
const MbCurve curve2,
MbDistance dmin 
)

Вычислить расстояние.

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

Аргументы
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]dmin- Результат - расстояние между кривыми.
Возвращает
true - кривые не пересекаются; false - кривые пересекаются.

◆ CalculateUV()

void CalculateUV ( const MbCurve curve1,
const MbCurve curve2,
double &  u,
double &  v 
)

Рассчитать параметры кривых.

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

Аргументы
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]u- Параметр на первой кривой.
[out]v- Параметр на второй кривой.

◆ PointsOnCurve()

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, если точки были насчитаны.

◆ FatArcContour()

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- Версия построения.

◆ BeginEnvelopeContour()

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, если сегмент добавлен.

◆ FindNearestCurve()

MbCurve* FindNearestCurve ( List< MbCurve > &  curveList,
MbCartPoint pnt 
)

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

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

Аргументы
[in]curveList- Список кривых.
[in]pnt- Точка.
Возвращает
Ближайшую кривую.

◆ IntersectWithAll()

void IntersectWithAll ( const MbCurve selectCurve,
LIterator< MbCurve > &  fromCurve,
SArray< MbCrossPoint > &  cross,
bool  self 
)

Найти точки пересечения.

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

Аргументы
[in]selectCurve- Кривая.
[in]fromCurve- Итератор списка кривых.
[out]cross- Точки пересечения.
[in]self- Флаг поиска самопересечений.

◆ SortCrossPoints()

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- Узел точек пересечения справа от проекции.

◆ RemoveEquPoints()

void RemoveEquPoints ( double  tProj,
SArray< MbCrossPoint > &  cross 
)

Удалить совпадающие точки.

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

Аргументы
[in]tProj- Параметр проекции.
[in,out]cross- Множество точек пересечения.

◆ Equid()

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- Множество контуров справа.

◆ MakeHatchingArea()

void MakeHatchingArea ( const PArray< MbCurve > &  contour,
double  witdh,
PArray< MbCurve > &  borders 
)

Построение области штриховки кривых.

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

Аргументы
[in]contour- Исходная кривые.
[in]witdh- Ширина штриховки.
[out]borders- Множество линий штриховки и границ штриховки.

◆ Fillet()

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 в случае успешной операции.

◆ Chamfer()

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 в случае успешной операции.

◆ FilletPolyContour()

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- Контур, построенный по полилинии.
Возвращает
Состояние кривой после её модификации.

◆ ChamferPolyContour()

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- Точка для выбора ближайшего узла.

◆ Corner()

bool Corner ( MbCurve crv1,
MbCurve crv2,
const MbCartPoint p1,
const MbCartPoint p2 
)

Продлить кривые.

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

Аргументы
[in,out]crv1- Первая кривая
[in,out]crv2- Вторая кривая.
[in]p1- Точка для выбора места пересечения.
[in]p2- Точка для выбора места пересечения.

◆ HatchIntersectLine()

void HatchIntersectLine ( double  y,
MbCurve curve,
SArray< MbCartPoint > &  crossPnt 
)

Найти пересечение с горизонтальной прямой.

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

Аргументы
[in]y- Координата у горизонтальной прямой.
[in]curve- Кривая.
[out]crossPnt- Точки пересечения.

◆ HatchIntersectCircle()

void HatchIntersectCircle ( MbCurve circle,
MbCurve curve,
SArray< MbCartPoint > &  crossPnt 
)

Найти пересечение с окружностью.

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

Аргументы
[in]circle- Окружность.
[in]curve- Кривая.
[out]crossPnt- Точки пересечения.

◆ CurveRelative()

double CurveRelative ( const MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2 
)

Положение кривой относительно точек оси.

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

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

◆ ContourRelative()

double ContourRelative ( const MbCurve curve,
const MbCartPoint p1,
const MbCartPoint p2,
double  sag 
)

Знак площади тени кривой на отрезок.

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

Аргументы
[in]curve- Исходная кривая.
[in]p1- Первая точка отрезка.
[in]p2- Вторая точка отрезка.
[in]sag- Угол отклонения. Используется для расчета шага по кривой.
Возвращает
Площадь тени со знаком.

◆ BooleanIntLoops()

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- Массив кривых пересечения.
Внимание
Устаревшая функция.
Возвращает
Код результата пересечения.

◆ RemoveContourGaps()

bool RemoveContourGaps ( MbContour contour,
double  accuracy,
bool  canInsert,
bool  canReplace 
)

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

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

Аргументы
[in]contour- Контур.
[in]accuracy- Ограничение по размеру разрыва (для вставки сегмента и поиска пересечения соседей.
[in]canInsert- Можно ли вставлять сегменты.
[in]canReplace- Можно ли заменять сегменты.
Возвращает
true, если контур изменился.

◆ EncloseContoursBuilder()

MpGraph* EncloseContoursBuilder ( const RPArray< 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 должно использоваться одно в одном процессе обработки.

◆ OuterContoursBuilder()

MpGraph* OuterContoursBuilder ( const RPArray< 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 должно использоваться одно в одном процессе обработки.

◆ ContoursReconstructor()

MpGraph* ContoursReconstructor ( const RPArray< 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 должно использоваться одно в одном процессе обработки.

◆ NearPointProjections()

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- Точность выбора ближайших точек.

◆ NearestPoints()

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).

◆ AreaSign()

double AreaSign ( const MbCurve curve,
double  sag,
bool  close 
)

Площадь и ориентация замкнутой кривой.

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

Аргументы
[in]curve- Исходная кривая.
[in]sag- Угловое отклонение касательной кривой в соседних точках интегрирования, используется для расчета шага по кривой.
[in]close- Флаг замкнутости.
Возвращает
Площадь замкнутой кривой со знаком (ориентацией).

◆ EqualPoints()

template<class Point >
bool c3d::EqualPoints ( const Point &  p1,
const Point &  p2,
double  xEpsilon,
double  yEpsilon 
)

Проверить точки на равенство.

Аргументы
[in]p1- Первая декартова точка.
[in]p2- Вторая декартова точка.
[in]xEpsilon- Метрическая погрешность совпадения точек вдоль оси X.
[in]yEpsilon- Метрическая погрешность совпадения точек вдоль оси Y.
Возвращает
true, если точки совпадают,
иначе false.

◆ EqualVectors()

template<class Vector >
bool c3d::EqualVectors ( const Vector &  p1,
const Vector &  p2,
double  xEpsilon,
double  yEpsilon 
)

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

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

Аргументы
[in]p1- Первый вектор.
[in]p2- Второй вектор.
[in]xEpsilon- Метрическая погрешность совпадения точек вдоль оси X.
[in]yEpsilon- Метрическая погрешность совпадения точек вдоль оси Y.
Возвращает
Возвращает true, если векторы равны.

◆ EqualLengths()

bool c3d::EqualLengths ( double  lx,
double  ly,
double  minLen = METRIC_EPSILON,
double  minDev = LENGTH_EPSILON 
)
inline

Проверить длины на равенство.

Аргументы
[in]lx,ly- Сравниваемые длины.
[in]minLen- Минимально возможная длина.
[in]minDev- Метрическая погрешность равенства длин.
Возвращает
true, если длины равны,
иначе false.

◆ FilletMultiline()

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- Информация для новых вершин мультилинии.

◆ ChamferMultiline()

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- Информация для новых вершин мультилинии.

◆ ToTakeIntoCurvesCrvRadii()

void ToTakeIntoCurvesCrvRadii ( MbCurve curve,
double  angle,
double &  minPos,
double &  maxNeg 
)

Внеклассные функции расчета/учета радиусов кривизны (реализация в MltLine.cpp)

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

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

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

◆ GetContoursCrvRadii()

void GetContoursCrvRadii ( MbContour contour,
double  angle,
double &  minPos,
double &  maxNeg 
)

Получить радиусы кривизны контура.

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

Аргументы
[in]contour- Контур.
[in]angle- Угловая толерантность.
[out]minPos- Минимальный радиус сегмента контура.
[out]maxNeg- Максимальный радиус сегмента контура.

◆ SmoothJointSuccessiveCurves()

bool SmoothJointSuccessiveCurves ( MbCurve curve1,
MbCurve curve2 
)

Состыковать две кривые.

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

Аргументы
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
Возвращает
true, если хотя бы одна кривая была изменена.

◆ BreakMultiline()

bool BreakMultiline ( const MbMultiline multiline,
const MbCartPoint p1,
const MbCartPoint p2,
PArray< MbMultiline > &  parts 
)

Разбить мультилинию.

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

Аргументы
[in]multiline- Разбиваемая мультилиния.
[in]p1- Точка разбиения или, если мультилиния замкнута, начальная точка для новой мультилинии.
[in]p2- Если мультилиния замкнута, то конечная точка для новой мультилинии.
[out]parts- Массив полученных участков (2 элемента).

◆ BreakMultilineNParts()

bool BreakMultilineNParts ( const MbMultiline multiline,
size_t  partsCount,
const MbCartPoint point,
PArray< MbMultiline > &  parts 
)

Разбить мультилинию.

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

Аргументы
[in]multiline- Разбиваемая мультилиния.
[in]partsCount- Количество частей.
[in]point- Ограничивающая точка для замкнутой мультилинии.
[out]parts- Массив полученных участков (partsCount элементов).

◆ GetCorrectRegions()

void GetCorrectRegions ( const RPArray< MbContour > &  contours,
bool  sameContours,
RPArray< MbRegion > &  regions 
)

Получить набор регионов.

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

Аргументы
[in]contours- Набор контуров.
[in]sameContours- Флаг использования оригиналов контуров при создании регионов.
[out]regions- Результат - набор регионов.

◆ MakeRegions()

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- Результат - набор регионов.

◆ CreateBooleanResultRegions() [1/2]

bool CreateBooleanResultRegions ( RPArray< MbContour > &  contours1,
RPArray< MbContour > &  contours2,
const MbRegionBooleanParams operParams,
RPArray< MbRegion > &  regions,
MbResultType resInfo = NULL 
)

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

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

Аргументы
[in]contours1- Первый набор контуров.
[in]contours2- Второй набор контуров.
[in]operParams- Параметры булевой операции.
[out]regions- Результат - набор регионов.
[out]resInfo- Код результата операции.
Возвращает
true в случае успеха операции.

◆ CreateBooleanResultRegions() [2/2]

bool CreateBooleanResultRegions ( MbRegion region1,
MbRegion region2,
const MbRegionBooleanParams operParams,
RPArray< MbRegion > &  regions,
MbResultType resInfo = NULL 
)

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

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

Аргументы
[in]region1- Первый регион.
[in]region2- Второй регион.
[in]operParams- Параметры булевой операции.
[out]regions- Результат - набор регионов.
[out]resInfo- Код результата операции.
Возвращает
true в случае успеха операции.

◆ MakeUnionRegions()

bool MakeUnionRegions ( RPArray< MbRegion > &  regions,
bool  allowSelfTouch = true,
bool  mergeCurves = true 
)

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

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

Аргументы
[in,out]regions- Начальные и конечные регионы.
[in]allowSelfTouch- Допустимость самокасаний в результате.
[in]mergeCurves- Объединять подобные сегменты кривых.
Возвращает
true, если какие-то регионы были объединены.