C3D Toolkit  Kernel - 107186, Vision - 190715.107186
+ Граф связей класса Построение кривых в двумерном пространстве:

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

enum  MbeArcCreateWay {
  acw_CircleByCenterAndRadius, acw_ArcByCenterAnd2Points, acw_ArcByCenterAnd2Angles, acw_ArcBy3Points,
  acw_EllipseByCenterAndSemiaxis, acw_EllipseByCenterAnd3Points, acw_EArcByCenterAnd2Points
}
 Перечисление способов создания эллипса (окружности) или их дуг в двумерном пространстве. Подробнее...
 

Функции

MbResultType Line (const MbCartPoint &point1, const MbCartPoint &point2, MbCurve *&result)
 Создать прямую. Подробнее...
 
MbResultType Segment (const MbCartPoint &point1, const MbCartPoint &point2, MbCurve *&result)
 Создать отрезок прямой. Подробнее...
 
MbResultType Arc (MbeArcCreateWay createWay, const MbCartPoint &center, const std::vector< MbCartPoint > &points, double &a, double &b, double &c, bool option, MbCurve *&result)
 Создать эллипс (окружность) или его дугу указанным способом. Подробнее...
 
MbResultType Arc (const MbCartPoint &centre, const SArray< MbCartPoint > &points, bool curveClosed, double angle, double &a, double &b, MbCurve *&result)
 
MbResultType SplineCurve (const SArray< MbCartPoint > &pointList, bool curveClosed, MbePlaneType curveType, MbCurve *&result)
 Создать кривую, проходящую по набору точек. Подробнее...
 
MbResultType NurbsCurve (const SArray< MbCartPoint > &pointList, const SArray< double > &weightList, size_t degree, const SArray< double > &knotList, bool curveClosed, MbCurve *&result)
 Создать NURBS-кривую. Подробнее...
 
MbResultType NurbsCopy (const MbCurve &curve, MbCurve *&result)
 Создать копию кривой в виде NURBS. Подробнее...
 
MbResultType RegularPolygon (const MbCartPoint &centre, const MbCartPoint &point, size_t vertexCount, bool describe, MbCurve *&result)
 Создать правильный многоугольник, вписанный в окружность или описанный вокруг окружности. Подробнее...
 
MbResultType Cosinusoid (const MbCartPoint &point0, const MbCartPoint &point1, const MbCartPoint &point2, double phase, double waveLength, MbCurve *&result)
 Создать косинусоиду. Подробнее...
 
MbResultType Cosinusoid (const MbCartPoint &origin, double amplitude, double waveLength, double wavesCount, double phase, MbCurve *&result)
 Создать косинусоиду. Подробнее...
 
MbResultType CreateContour (MbCurve &curve, MbContour *&result)
 Создать составную кривую (контур). Подробнее...
 
MbCurveDuplicateCurve (const MbCurve &curve)
 Создать копию кривой. Подробнее...
 
MbContourDuplicateContour (const MbContour &cntr, bool modifySegments, MbSNameMaker *names=NULL)
 Создать копию контура. Подробнее...
 
MbContourOffsetContour (const MbContour &cntr, double rad, double xEpsilon, double yEpsilon, bool modifySegments, VERSION version=Math::DefaultMathVersion())
 Создать эквидистантный контур. Подробнее...
 
MbContourAxisOffsetOpenContour (const MbContour &cntr, const MbCartPoint &q1, const MbCartPoint &q2, double rad, double xEpsilon, double yEpsilon)
 Создать эквидистантный контур, начинающийся и оканчивающийся на оси вращения. Подробнее...
 
bool CurveTrim (MbCurve &curve, double t1, double t2, double eps=METRIC_PRECISION)
 Инициализировать кривую по новым параметрам. Подробнее...
 
MbResultType AddCurveToContour (MbCurve &curve, MbContour &contour, bool toEnd)
 Добавить кривую в составную кривую (контур). Подробнее...
 
void CurveSection (const MbCurve3D &curve, const MbPlacement3D &place, SArray< MbCartPoint > &result, RPArray< MbCurve > &resultCurve)
 Найти пересечения кривой с плоскостью. Подробнее...
 
void SurfaceSection (const MbSurface &surface, const MbPlacement3D &place, RPArray< MbCurve > &result, VERSION version=Math::DefaultMathVersion())
 Найти пересечения поверхности с плоскостью. Подробнее...
 
MbResultType FaceBoundSegment (const MbFace &face, size_t loopInd, size_t edgeInd, const MbSurface &surface, VERSION version, MbCurve *&result)
 Создать двумерный сегмент поверхности проецированием ориентированного ребра. Подробнее...
 
MbResultType SurfaceBoundContour (const MbSurface &surface, const MbCurve3D &spaceCurve, VERSION version, MbContour *&result)
 Создать двумерную границу поверхности проецированием пространственной кривой. Подробнее...
 
bool IsLikeStraightLine (const MbCurve &curve, double eps)
 Является ли кривая прямолинейной независимо от ее параметризации. Подробнее...
 
MbContourDeleteDegenerateSegments (const MbContour &cntr, bool modifySegments, MbSNameMaker *names=NULL)
 Удалить вырожденные сегменты из контура. Подробнее...
 
ptrdiff_t CircleTanLineLineRad (MbLine &pl1, MbLine &pl2, double rad, MbTempCircle *pc)
 Вычислить центры окружностей. Подробнее...
 
ptrdiff_t CircleTanLineCircleRadius (const MbLine &pl1, const MbArc &pc1, double rad, MbTempCircle *pc)
 Вычислить центры окружностей. Подробнее...
 
ptrdiff_t CircleTanCircleCircleRad (MbArc &pc1, MbArc &pc2, double rad, MbTempCircle *pc)
 Вычислить центры окружностей. Подробнее...
 
void CircleTanCurveCentre (const MbCurve &pCurve, MbCartPoint &pnt, PArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleTangentCurveTwoPoints (const MbCurve &pCurve, MbCartPoint &on1, MbCartPoint &on2, PArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleTangentCurveRPointOn (const MbCurve &pCurve, double radius, MbCartPoint &on, PArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleTanTwoCurvesRadius (const MbCurve &pCurve1, const MbCurve &pCurve2, double rad, PArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleTanTwoCurvesPointOn (const MbCurve &pCurve1, const MbCurve &pCurve2, const MbCartPoint &pOn, PArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleOriginOneTangentTwo (const MbCurve &pCurve1, const MbCurve &pCurve2, const MbCartPoint &pp, RPArray< MbTempCircle > &pCircle)
 Построить окружности. Подробнее...
 
void CircleTanCurvePointOnAngle (MbCurve &curve, MbCartPoint &p1, double angle, PArray< MbTempCircle > &circles)
 Построить окружности. Подробнее...
 
void ArcTangentCurveTwoPoints (const MbCurve &pCurve, MbCartPoint &on1, MbCartPoint &on2, PArray< MbArc > &arc)
 Построить дуги окружностей. Подробнее...
 
void ArcTangentCurveRPointOn (const MbCurve &pCurve, double radius, MbCartPoint &on, PArray< MbArc > &arc)
 Построить дуги окружностей. Подробнее...
 
void ArcTangentCurveContinue (MbLine &line, MbCartPoint &p2, PArray< MbArc > &arc)
 Построить дугу окружности. Подробнее...
 
void ArcTangentCurveRadContinue (MbLine &line, double rad, MbCartPoint &p2, PArray< MbArc > &arc)
 Построить дугу окружности. Подробнее...
 
void CircleTanThreeCurves (const MbCurve *curve1, const MbCurve *curve2, const MbCurve *curve3, MbCartPoint &pnt, PArray< MbTempCircle > &circle)
 Построить окружности. Подробнее...
 
void CreateNewCircles (PArray< MbTempCircle > &cTmp, PArray< MbArc > &pCircle)
 Копировать временные окружности Подробнее...
 
void LineParallelPoint (const MbCartPoint &p, const MbLine &pl, MbLine &pl_par)
 Построить прямую, параллельную заданной. Подробнее...
 
void LineParallelDistance (double delta, const MbLine &pl, MbLine &pl_par)
 Построить прямую, параллельную заданной. Подробнее...
 
int LineBisector (const MbCartPoint &p, const MbLine &pl1, const MbLine &pl2, MbLine &pl3)
 Построить прямую через точку. Подробнее...
 
void LinePointAngle (double angle, const MbCartPoint &p, const MbLine &pl, MbLine &pl_new)
 Построить прямую под углом. Подробнее...
 
bool EllipsePntPntDist (const MbCartPoint &p1, const double &l1, const MbCartPoint &p2, double &l2, MbCartPoint &pc, double &angle)
 Построить эллипс Подробнее...
 
void LinePointPerpCurve (const MbCartPoint &pnt, const MbCurve &pCurve, PArray< MbLine > &pLine)
 Построить прямую через точку. Подробнее...
 
int LinePointTangentCircle (const MbCartPoint &p, const MbCartPoint &centre, double radius, MbLine *pl)
 Построить прямую через точку. Подробнее...
 
void CircleCentreOnCurveRadPointOn (const MbCurve &pCurve, double radius, const MbCartPoint &on, PArray< MbTempCircle > &pCircle)
 Построить окружность. Подробнее...
 
void CircleCentreOnCurveTwoPoints (const MbCurve &pCurve, const MbCartPoint &on1, const MbCartPoint &on2, PArray< MbTempCircle > &pCircle)
 Построить окружность. Подробнее...
 
int Arc2PointsRadius (const MbCartPoint &p1, const MbCartPoint &p2, double rad, bool clockwise, MbArc *arc)
 Построить дугу окружности. Подробнее...
 
MbCurveCanonicToParametricConic (double A, double B, double C, double D, double E, double F, double X1, double Y1, double X2, double Y2)
 Построить кривые. Подробнее...
 
void LinePointTangentCurve (MbCartPoint &pnt, const MbCurve &pCurve, PArray< MbLine > &pLine, bool lineAsCurve=false)
 Построить касательные прямые. Подробнее...
 
void LineAngleTangentCurve (double angle, const MbCurve &pCurve, PArray< MbLine > &pLine)
 Построить прямые под углом. Подробнее...
 
ptrdiff_t LineTan2Circles (const MbCartPoint &centre1, double radius1, const MbCartPoint &centre2, double radius2, MbLine *pl, MbCartPoint *sp)
 Построить прямые, касательные к окружностям. Подробнее...
 
void LineTangentTwoCurves (const MbCurve *pCurve1, const MbCurve *pCurve2, PArray< MbLine > *pLine, SArray< MbCartPoint > *secodnPnt)
 Построить касательную прямую. Подробнее...
 
ptrdiff_t LineAngleTanCircle (double angle, const MbCartPoint &centre, double radius, MbLine *pLine)
 Построить прямые под углом. Подробнее...
 
void SwapLines (MbLine &l1, MbLine &l2)
 Перестывить прямые. Подробнее...
 
MbCurveNurbsConic_1 (const MbCartPoint &mbPoint0, const MbCartPoint &mbPoint1, const MbCartPoint &mbPoint2, double fDiscr)
 Построить коническое сечение по двум точкам вершине и дискриминанту. Подробнее...
 
MbCurveNurbsConic_2 (std::vector< MbCartPoint > &vmbConicPoints, const MbCartPoint &mbVertex)
 Построить коническое сечение по трем точкам и вершине. Подробнее...
 
MbCurveNurbsConic_3 (const std::vector< MbCartPoint > &vmbConicPoints, MbVector &mbTangent1, MbVector &mbTangent2)
 Построить коническое сечение по трем точкам и двум наклонам. Подробнее...
 
MbCurveNurbsConic_4 (const MbCartPoint &mbPoint1, const MbCartPoint &mbPoint2, const MbVector &mbTangent1, const MbVector &mbTangent2, double fDiscr)
 Построить коническое сечение по двум точкам, двум наклонам и дискриминанту. Подробнее...
 
MbCurveNurbsConic_5 (const std::vector< MbCartPoint > &vmbConicPoints, MbVector &mbTangent1, size_t tanPntNb=1)
 Построить коническое сечение по четырем точкам и наклону. Подробнее...
 
MbCurveNurbsConic_6 (const std::vector< MbCartPoint > &vmbConicPoints)
 Построить коническое сечение по пяти точкам. Подробнее...
 
void CreateSmoothFromBezier (const MbBezier &bez, RPArray< MbCurve > &arCurve, bool bline)
 Создать гладкую кривую из кривой Безье. Подробнее...
 
MbCurveConvertNurbsToCurveOfType (const MbNurbs &nurbs, MbePlaneType type, double eps)
 Создать кривую заданного типа базе NURBS-кривой. Подробнее...
 
void CreateSurfaceHide (const MbSurface &surf, const MbPlacement3D &eyePlace, double sag, RPArray< MbCurve > &hideCurves, VERSION version=Math::DefaultMathVersion())
 Получить массив кривых плоской проекции очерка поверхности. Подробнее...
 

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

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

◆ MbeArcCreateWay

Перечисление способов создания эллипса (окружности) или их дуг в двумерном пространстве.

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

Окружность по центру и радиусу, задается 'center' и радиус в 'c'.

acw_ArcByCenterAnd2Points 

Дуга окружности по центру и двум точкам. Задается: 'center', две точки в 'points', направление в 'option' (true - по часовой стрелке). Возвращается: начальный угол дуги в 'а', конечный угол в 'b', радиус в 'c'.

acw_ArcByCenterAnd2Angles 

Дуга окружности по центру и двум углам. Задается: 'center', начальный угол в 'a', конечный в 'b', радиус в 'c', направление в 'option' (true - по часовой стрелке). Углы задаются в радианах.

acw_ArcBy3Points 

Дуга окружности по трем точкам, заданным в 'points', точки points[0] и points[2] конечные. Возвращается: начальный угол дуги в 'а', конечный угол в 'b', радиус в 'c'.

acw_EllipseByCenterAndSemiaxis 

Эллипс с заданными полуосями и углом наклона. Задается 'center', X полуось в 'a', Y полуось в 'b', угол наклона в 'с'. Угол задается в радианах.

acw_EllipseByCenterAnd3Points 

Эллипс по центру и трем точкам на нем. Задается 'center' и 3 точки в 'points'. Возвращаются: X полуось в 'a', Y полуось в 'b', угол наклона в 'с'. Угол задается в радианах.

acw_EArcByCenterAnd2Points 

Дуга эллипса, обрезанная двумя лучами из центра к заданным точкам. Задается 'center' и 2 точки в 'points', X полуось в 'a', Y полуось в 'b', угол наклона в 'с', направление в 'option' (true - по часовой стрелке). Угол задается в радианах.

Функции

◆ Line()

MbResultType Line ( const MbCartPoint point1,
const MbCartPoint point2,
MbCurve *&  result 
)

Создать прямую.

Создать прямую по двум точкам.

Аргументы
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Прямая.
Возвращает
Возвращает код результата операции.

◆ Segment()

MbResultType Segment ( const MbCartPoint point1,
const MbCartPoint point2,
MbCurve *&  result 
)

Создать отрезок прямой.

Создать отрезок прямой по двум точкам.

Аргументы
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Отрезок.
Возвращает
Возвращает код результата операции.

◆ Arc() [1/2]

MbResultType Arc ( MbeArcCreateWay  createWay,
const MbCartPoint center,
const std::vector< MbCartPoint > &  points,
double &  a,
double &  b,
double &  c,
bool  option,
MbCurve *&  result 
)

Создать эллипс (окружность) или его дугу указанным способом.

Создать эллипс (окружность) или его дугу указанным способом.
Входные параметры интерпретируются в соответствии с выбранным путем создания. Способ создания. Определяет как интерпретировать входные параметры.

Аргументы
[in]center- Центр
[in]points- Конечные точки или точки через которые проходит кривая.
[in,out]a- Интерпретация параметра зависит от способа создания дуги, см. enum #ArcCreateWay
[in,out]b- Интерпретация параметра зависит от способа создания дуги, см. enum #ArcCreateWay
[in,out]с- Интерпретация параметра зависит от способа создания дуги, см. enum #ArcCreateWay
[in]option- Интерпретация параметра зависит от способа создания дуги, см. enum #ArcCreateWay
[out]result- Эллипс (окружность) или его дуга.
Возвращает
Возвращает код результата операции.

◆ Arc() [2/2]

MbResultType Arc ( const MbCartPoint centre,
const SArray< MbCartPoint > &  points,
bool  curveClosed,
double  angle,
double &  a,
double &  b,
MbCurve *&  result 
)
Внимание
Функция устарела. Вместо неё применять Arc.

◆ SplineCurve()

MbResultType SplineCurve ( const SArray< MbCartPoint > &  pointList,
bool  curveClosed,
MbePlaneType  curveType,
MbCurve *&  result 
)

Создать кривую, проходящую по набору точек.

Создать кривую, проходящую по набору точек, следующего типа:

  • curveType == pt_LineSegment - отрезок,
  • curveType == pt_Arc - окружность или дуга,
  • curveType == pt_Polyline - ломаная,
  • curveType == pt_Bezier - кривая Безье,
  • curveType == pt_CubicSpline - кубический сплайн,
  • curveType == pt_Hermit - составной кубический сплайн Эрмита,
  • curveType == pt_Nurbs - неоднородный рациональный B-сплайн четвертого порядка (кубический).
    Аргументы
    [in]pointList- Набор точек.
    [in]curveClosed- Замкнутость кривой.
    [in]curveType- Тип кривой.
    [out]result- Кривая.
    Возвращает
    Возвращает код результата операции.

◆ NurbsCurve()

MbResultType NurbsCurve ( const SArray< MbCartPoint > &  pointList,
const SArray< double > &  weightList,
size_t  degree,
const SArray< double > &  knotList,
bool  curveClosed,
MbCurve *&  result 
)

Создать NURBS-кривую.

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

Аргументы
[in]pointList- Множество точек.
[in]weightList- Множество весов.
[in]degree- Порядок сплайна.
[in]knotList- Множество параметрических узлов (Узловой вектор).
[in]curveClosed- Замкнутость кривой.
[out]result- Сплайновая кривая.
Возвращает
Возвращает код результата операции.

◆ NurbsCopy()

MbResultType NurbsCopy ( const MbCurve curve,
MbCurve *&  result 
)

Создать копию кривой в виде NURBS.

Создать копию кривой в виде NURBS.

Аргументы
[in]curve- Исходная кривая.
[out]result- Сплайновая копия кривой.
Возвращает
Возвращает код результата операции.

◆ RegularPolygon()

MbResultType RegularPolygon ( const MbCartPoint centre,
const MbCartPoint point,
size_t  vertexCount,
bool  describe,
MbCurve *&  result 
)

Создать правильный многоугольник, вписанный в окружность или описанный вокруг окружности.

Создать правильный многоугольник, вписанный в окружность (describe == false) или описанный вокруг окружности (describe == true) с центром centre, проходящей через point:

  • при vertexCount == 0 строится окружность с центром centre, проходящая через point,
  • при vertexCount == 1 строится отрезок c крайними точками centre и point,
  • при vertexCount == 2 строится прямоугольник со сторонами, параллельными глобальным осям и противоположными вершинами в centre и point,
  • при vertexCount >= 3 строится правильный многоугольник с заданным числом сторон, вписанный в окружность (describe == false) или описанный вокруг окружности (describe == true) с центром centre, проходящей через point:
    Аргументы
    [in]centre- Центр фигуры.
    [in]point- Точка для построения.
    [in]vertexCount- Количество вершин правильного многоугольника.
    [in]describe- Флаг построения многоугольника: описать вокруг окружности (true), вписать в окружность (false).
    [out]result- Результат построения.
    Возвращает
    Возвращает код результата операции.

◆ Cosinusoid() [1/2]

MbResultType Cosinusoid ( const MbCartPoint point0,
const MbCartPoint point1,
const MbCartPoint point2,
double  phase,
double  waveLength,
MbCurve *&  result 
)

Создать косинусоиду.

Создать косинусоиду по точкам, фазе и длине волны.

Аргументы
[in]point0- Начало локальной системы координат (ЛСК).
[in]point1- Точка на оси X ЛСК.
[in]point2- Точка на оси Y ЛСК.
[in]phase- Фаза.
[in]waveLength- Длина Волны.
[out]result- Косинусоида.
Возвращает
Возвращает код результата операции.

◆ Cosinusoid() [2/2]

MbResultType Cosinusoid ( const MbCartPoint origin,
double  amplitude,
double  waveLength,
double  wavesCount,
double  phase,
MbCurve *&  result 
)

Создать косинусоиду.

Создать косинусоиду по точкам, фазе и длине волны.

Аргументы
[in]origin- Начало локальной системы координат (ЛСК).
[in]amplitude- Амплитуда волны.
[in]waveLength- Длина Волны.
[in]wavesCount- Количество волн.
[in]phase- Фаза.
[out]result- Косинусоида.
Возвращает
Возвращает код результата операции.

◆ CreateContour()

MbResultType CreateContour ( MbCurve curve,
MbContour *&  result 
)

Создать составную кривую (контур).

Создать составную кривую (контур) на базе исходной кривой.

Аргументы
[in]curve- Исходная кривая.
[out]result- Контур на основе кривой.
Возвращает
Возвращает код результата операции.

◆ DuplicateCurve()

MbCurve* DuplicateCurve ( const MbCurve curve)

Создать копию кривой.

Создать копию кривой с заменой некоторых кривых.

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

◆ DuplicateContour()

MbContour* DuplicateContour ( const MbContour cntr,
bool  modifySegments,
MbSNameMaker names = NULL 
)

Создать копию контура.

Создать копию контура с заменой некоторых кривых и его модификацией по флагу. Модификация - слияние подобных кривых и удаление вырожденных.

Аргументы
[in]cntr- Исходный контур.
[in]modifySegments- Флаг разрешения замены и слияния сегментов.
[in]names- Именователь, синхронизированный с контуром.
Возвращает
Возвращает модифицированнную копию контура, если получилось его создать.

◆ OffsetContour()

MbContour* OffsetContour ( const MbContour cntr,
double  rad,
double  xEpsilon,
double  yEpsilon,
bool  modifySegments,
VERSION  version = Math::DefaultMathVersion() 
)

Создать эквидистантный контур.

Создать эквидистантный контур к исходному контуру.

Аргументы
[in]cntr- Исходный контур.
[in]rad- Величина эквидистантного смещения.
[in]xEpsilon- Точность по x.
[in]yEpsilon- Точность по y.
[in]modifySegments- Флаг разрешения замены и слияния сегментов.
[in]version- Версия исполнения.
Возвращает
Возвращает эквидистантный контур, если получилось его создать.

◆ AxisOffsetOpenContour()

MbContour* AxisOffsetOpenContour ( const MbContour cntr,
const MbCartPoint q1,
const MbCartPoint q2,
double  rad,
double  xEpsilon,
double  yEpsilon 
)

Создать эквидистантный контур, начинающийся и оканчивающийся на оси вращения.

Создать незамкнутый эквидистантный контур, начинающийся и оканчивающийся на оси вращения.
Cчитается, что, если контур замкнуть, то он будет ориентирован против движения часовой стрелки.

Аргументы
[in]cntr- Исходный контур.
[in]q1- Начальная точка оси вращения.
[in]q2- Конечная точка оси вращения.
[in]rad- Величина эквидистантного смещения.
[in]xEpsilon- Точность по x.
[in]yEpsilon- Точность по y.
Возвращает
Возвращает эквидистантный контур, если получилось его создать.

◆ CurveTrim()

bool CurveTrim ( MbCurve curve,
double  t1,
double  t2,
double  eps = METRIC_PRECISION 
)

Инициализировать кривую по новым параметрам.

Инициализировать кривую по новым параметрам.

Аргументы
[in,out]curve- Изменяемая кривая.
[in]t1- Новый начальный параметр.
[in]t2- Новый конечный параметр.
[in]eps- Точность.
Возвращает
Возвращает true, если получилось модифицировать кривую.

◆ AddCurveToContour()

MbResultType AddCurveToContour ( MbCurve curve,
MbContour contour,
bool  toEnd 
)

Добавить кривую в составную кривую (контур).

Добавить кривую curve в составную кривую (контур) contour.
Если toEnd == true, то добавить в конец.
Если toEnd == false, то добавить в начало.

Аргументы
[in]curve- Добавляемая кривая
[in,out]contour- Модифицируемый контур.
[in]toEnd- Флаг места добавления кривой.
Возвращает
Возвращает код результата операции.

◆ CurveSection()

void CurveSection ( const MbCurve3D curve,
const MbPlacement3D place,
SArray< MbCartPoint > &  result,
RPArray< MbCurve > &  resultCurve 
)

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

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

Аргументы
[in]curve- Кривая.
[in]place- Система координат плоскости.
[out]result- Множество точек на плоскости.
[out]resultCurve- Множество кривых на плоскости.

◆ SurfaceSection()

void SurfaceSection ( const MbSurface surface,
const MbPlacement3D place,
RPArray< MbCurve > &  result,
VERSION  version = Math::DefaultMathVersion() 
)

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

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

Аргументы
[in]surface- Поверхность.
[in]place- Система координат плоскости.
[out]result- Множество кривых на плоскости.

◆ FaceBoundSegment()

MbResultType FaceBoundSegment ( const MbFace face,
size_t  loopInd,
size_t  edgeInd,
const MbSurface surface,
VERSION  version,
MbCurve *&  result 
)

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

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

Аргументы
[in]face- Грань поверхности.
[in]loopInd- Номер цикла в грани.
[in]edgeInd- Номер проецируемого ребра в цикле.
[in]surface- Поверхность проецирования.
[in]version- Версия изготовления.
[out]result- Двумерная кривая.
Возвращает
Возвращает код результата операции.

◆ SurfaceBoundContour()

MbResultType SurfaceBoundContour ( const MbSurface surface,
const MbCurve3D spaceCurve,
VERSION  version,
MbContour *&  result 
)

Создать двумерную границу поверхности проецированием пространственной кривой.

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

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

◆ IsLikeStraightLine()

bool IsLikeStraightLine ( const MbCurve curve,
double  eps 
)

Является ли кривая прямолинейной независимо от ее параметризации.

Является ли кривая прямолинейной независимо от ее параметризации.

Аргументы
[in]curve- Кривая.
[in]eps- Точность.

◆ DeleteDegenerateSegments()

MbContour* DeleteDegenerateSegments ( const MbContour cntr,
bool  modifySegments,
MbSNameMaker names = NULL 
)

Удалить вырожденные сегменты из контура.

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

Аргументы
[in]cntr- Исходный контур.
[in]modifySegments- Флаг разрешения замены сегментов.
[in]names- Именователь, синхронизированный с контуром.
Возвращает
Возвращает модифицированнную копию контура, если получилось его создать.

◆ CircleTanLineLineRad()

ptrdiff_t CircleTanLineLineRad ( MbLine pl1,
MbLine pl2,
double  rad,
MbTempCircle pc 
)

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

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

Аргументы
[in]pl1- Первая прямая.
[in]pl2- Вторая прямая.
[in]rad- Радиус окружности.
[out]pc- Результат - массив окружностей с искомым центром.
Возвращает
Количество окружностей в массиве.

◆ CircleTanLineCircleRadius()

ptrdiff_t CircleTanLineCircleRadius ( const MbLine pl1,
const MbArc pc1,
double  rad,
MbTempCircle pc 
)

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

Вычислить центры окружностей заданного радиуса rad, касающихся данных прямой pl1 и окружности pc1.

Аргументы
[in]pl1- Прямая.
[in]pc1- Окружность.
[in]rad- Радиус окружностей с искомым центром.
[out]pc- Результат - массив окружностей с искомым центром.
Возвращает
Количество окружностей в массиве.

◆ CircleTanCircleCircleRad()

ptrdiff_t CircleTanCircleCircleRad ( MbArc pc1,
MbArc pc2,
double  rad,
MbTempCircle pc 
)

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

Вычислить центры окружностей заданного радиуса rad, касающихся двух окружностей pc1 и pc2.

Аргументы
[in]pc1- Первая окружность.
[in]pc2- Вторая окружность.
[in]rad- Радиус окружностей с искомым центром.
[out]pc- Результат - массив окружностей с искомым центром.
Возвращает
Количество окружностей в массиве.

◆ CircleTanCurveCentre()

void CircleTanCurveCentre ( const MbCurve pCurve,
MbCartPoint pnt,
PArray< MbTempCircle > &  pCircle 
)

Построить окружности.

Построить окружности с заданным центром, касающиеся заданной кривой.

Аргументы
[in]pCurve- Кривая, касающаяся окружности.
[in]pnt- Центр окружности.
[out]pCircle- Набор окружностей.

◆ CircleTangentCurveTwoPoints()

void CircleTangentCurveTwoPoints ( const MbCurve pCurve,
MbCartPoint on1,
MbCartPoint on2,
PArray< MbTempCircle > &  pCircle 
)

Построить окружности.

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

Аргументы
[in]pCurve- Кривая, касающаяся окружности.
[in]on1- Точка на окружности.
[in]on2- Точка на окружности.
[out]pCircle- Набор окружностей.

◆ CircleTangentCurveRPointOn()

void CircleTangentCurveRPointOn ( const MbCurve pCurve,
double  radius,
MbCartPoint on,
PArray< MbTempCircle > &  pCircle 
)

Построить окружности.

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

Аргументы
[in]pCurve- Кривая, касающаяся окружности.
[in]radius- Радиус.
[in]on- Точка на окружности.
[out]pCircle- Набор окружностей.

◆ CircleTanTwoCurvesRadius()

void CircleTanTwoCurvesRadius ( const MbCurve pCurve1,
const MbCurve pCurve2,
double  rad,
PArray< MbTempCircle > &  pCircle 
)

Построить окружности.

Построить окружности с заданным радиусом, касающиеся двух кривых.

Аргументы
[in]pCurve1- Первая кривая, касающаяся окружности.


Аргументы
[in]pCurve2- Вторая кривая, касающаяся окружности.
[in]rad- Радиус.
[out]pCircle- Набор окружностей.

◆ CircleTanTwoCurvesPointOn()

void CircleTanTwoCurvesPointOn ( const MbCurve pCurve1,
const MbCurve pCurve2,
const MbCartPoint pOn,
PArray< MbTempCircle > &  pCircle 
)

Построить окружности.

Построить окружности, проходящие через заданную точку, касающиеся двух кривых.

Аргументы
[in]pCurve1- Первая кривая, касающаяся окружности.


Аргументы
[in]pCurve2- Вторая кривая, касающаяся окружности.


Аргументы
[in]pOn- Точка на окружности.
[out]pCircle- Набор окружностей.

◆ CircleOriginOneTangentTwo()

void CircleOriginOneTangentTwo ( const MbCurve pCurve1,
const MbCurve pCurve2,
const MbCartPoint pp,
RPArray< MbTempCircle > &  pCircle 
)

Построить окружности.

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

Аргументы
[in]pCurve1- Первая кривая, содержащая центр окружности.


Аргументы
[in]pCurve2- Вторая кривая, касающаяся окружности.


Аргументы
[in]pp- Точка на окружности.
[out]pCircle- Набор окружностей.

◆ CircleTanCurvePointOnAngle()

void CircleTanCurvePointOnAngle ( MbCurve curve,
MbCartPoint p1,
double  angle,
PArray< MbTempCircle > &  circles 
)

Построить окружности.

Построить окружности, касательные заданной кривой, проходящие через заданную точку, составляющие в точке касания угол(p1, centre, ptan), равный данному.

Аргументы
[in]curve- Кривая, касающаяся окружности.


Аргументы
[in]p1- Точка на окружности.
[in]angle- Угол, образованный тремя точками:
заданной точкой на окружности p1,
центром окружности,
точкой касания.
[out]circles- Набор окружностей.

◆ ArcTangentCurveTwoPoints()

void ArcTangentCurveTwoPoints ( const MbCurve pCurve,
MbCartPoint on1,
MbCartPoint on2,
PArray< MbArc > &  arc 
)

Построить дуги окружностей.

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

Аргументы
[in]pCurve- Кривая, касающаяся дуг.
[in]on1- Первая точка на дуге.
[in]on2- Вторая точка на дуге.
[out]arc- Набор дуг.

◆ ArcTangentCurveRPointOn()

void ArcTangentCurveRPointOn ( const MbCurve pCurve,
double  radius,
MbCartPoint on,
PArray< MbArc > &  arc 
)

Построить дуги окружностей.

Построить дуги окружностей по радиусу и точке, касающиеся заданной кривой.

Аргументы
[in]pCurve- Кривая, касающаяся дуг.
[in]radius- Радиус.
[in]on- Точка на дуге.
[out]arc- Набор дуг.

◆ ArcTangentCurveContinue()

void ArcTangentCurveContinue ( MbLine line,
MbCartPoint p2,
PArray< MbArc > &  arc 
)

Построить дугу окружности.

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

Аргументы
[in]line- Кривая для сопряжения.
[in]p2- Точка на дуге.
[out]arc- Множество с дугой окружности.

◆ ArcTangentCurveRadContinue()

void ArcTangentCurveRadContinue ( MbLine line,
double  rad,
MbCartPoint p2,
PArray< MbArc > &  arc 
)

Построить дугу окружности.

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

Аргументы
[in]line- Кривая для сопряжения.
[in]rad- Радиус.
[in]p2- Точка на дуге.
[out]arc- Множество с дугой окружности.

◆ CircleTanThreeCurves()

void CircleTanThreeCurves ( const MbCurve curve1,
const MbCurve curve2,
const MbCurve curve3,
MbCartPoint pnt,
PArray< MbTempCircle > &  circle 
)

Построить окружности.

Построить окружности, касающиеся трех кривых.

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

◆ CreateNewCircles()

void CreateNewCircles ( PArray< MbTempCircle > &  cTmp,
PArray< MbArc > &  pCircle 
)

Копировать временные окружности

Копировать временные окружности.
Очищает временный массив cTmp.

Аргументы
[in,out]cTmp- Набор временных окружностей. Множество очищается.
[out]pCircle- Набор дуг окружностей, созданных соответственно временным окружностям.

◆ LineParallelPoint()

void LineParallelPoint ( const MbCartPoint p,
const MbLine pl,
MbLine pl_par 
)

Построить прямую, параллельную заданной.

Построить прямую, параллельную заданной через точку.

Аргументы
[in]p- Точка на прямой.
[in]pl- Параллельная прямая.
[out]pl_par- Результат - прямая, параллельная pl, через точку p.

◆ LineParallelDistance()

void LineParallelDistance ( double  delta,
const MbLine pl,
MbLine pl_par 
)

Построить прямую, параллельную заданной.

Построить прямую, параллельную заданной, на расстоянии.

Аргументы
[in]delta- Расстояние до параллельной прямой.
[in]pl- Параллельная прямая.
[out]pl_par- Результат - прямая, параллельная pl, на расстоянии delta.

◆ LineBisector()

int LineBisector ( const MbCartPoint p,
const MbLine pl1,
const MbLine pl2,
MbLine pl3 
)

Построить прямую через точку.

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

Аргументы
[in]p- Точка на прямой.
[in]pl1- Прямая, задающая сторону угла.
[in]pl2- Прямая, задающая сторону угла.
[out]pl3- Результат.

◆ LinePointAngle()

void LinePointAngle ( double  angle,
const MbCartPoint p,
const MbLine pl,
MbLine pl_new 
)

Построить прямую под углом.

Построить прямую под углом angle к заданной pl через точку p

Аргументы
[in]angle- Угол.
[in]p- Точка на прямой.
[in]pl- Прямая под углом angle к построенной.
[out]pl_new- Результат - построенная прямая.

◆ EllipsePntPntDist()

bool EllipsePntPntDist ( const MbCartPoint p1,
const double &  l1,
const MbCartPoint p2,
double &  l2,
MbCartPoint pc,
double &  angle 
)

Построить эллипс

Построить эллипс.
Зафиксирована конечная точка и длина первой полуоси. Вводится конечная точка второй полуоси. Вычислить длину второй полуоси, центр эллипса и угол наклона первой полуоси.


Аргументы
[in]p1- Конечная точка первой полуоси.
[in]l1- Длина первой полуоси.
[in]p2- Конечная точка второй полуоси.
[out]l2- Длина второй полуоси.
[out]pc- Центр эллипса.
[out]angle- Угол наклона первой полуоси.

◆ LinePointPerpCurve()

void LinePointPerpCurve ( const MbCartPoint pnt,
const MbCurve pCurve,
PArray< MbLine > &  pLine 
)

Построить прямую через точку.

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

Аргументы
[in]pnt- Точка на прямой.
[in]pCurve- Перпендикулярная прямая.
[out]pLine- Результат - массив прямых.

◆ LinePointTangentCircle()

int LinePointTangentCircle ( const MbCartPoint p,
const MbCartPoint centre,
double  radius,
MbLine pl 
)

Построить прямую через точку.

Построить прямую, проходящую через точку и касательную заданной окружности, заданной центром и радиусом.

Аргументы
[in]p- Точка на прямой.
[in]centre- Центр окружности.
[in]radius- Радиус окружности.
[out]pl- Результат - массив прямых.
Возвращает
Количество прямых.

◆ CircleCentreOnCurveRadPointOn()

void CircleCentreOnCurveRadPointOn ( const MbCurve pCurve,
double  radius,
const MbCartPoint on,
PArray< MbTempCircle > &  pCircle 
)

Построить окружность.

Построить окружность по радиусу и точке на ней, центр окружности лежит на заданной кривой.

Аргументы
[in]pCurve- Кривая, содержащая центр окружности.
[in]radius- Радиус окружности.
[in]on- Точка на окружности.
[out]pCircle- Результат - набор окружностей.

◆ CircleCentreOnCurveTwoPoints()

void CircleCentreOnCurveTwoPoints ( const MbCurve pCurve,
const MbCartPoint on1,
const MbCartPoint on2,
PArray< MbTempCircle > &  pCircle 
)

Построить окружность.

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

Аргументы
[in]pCurve- Кривая, содержащая центр окружности.
[in]on1- Точка на окружности.
[in]on2- Точка на окружности.
[out]pCircle- Результат - набор окружностей.

◆ Arc2PointsRadius()

int Arc2PointsRadius ( const MbCartPoint p1,
const MbCartPoint p2,
double  rad,
bool  clockwise,
MbArc arc 
)

Построить дугу окружности.

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

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

◆ CanonicToParametricConic()

MbCurve* CanonicToParametricConic ( double  A,
double  B,
double  C,
double  D,
double  E,
double  F,
double  X1,
double  Y1,
double  X2,
double  Y2 
)

Построить кривые.

Построить кривые по коэффициентам конического сечения.


Аргументы
[in]A,B,C,D,E,F- Коэффициенты уравнения конического сечения A*x^2 + B*x*y + C*y^2 + D*x + E*y + F = 0.
[in]X1,Y1- Координаты первой граничной точки.


Аргументы
[in]X2,Y2- Координаты второй граничной точки.
Возвращает
Результаты построения:
  • дуга окружности -> дуга окружности;
  • дуга эллипса -> дуга эллипса;
  • дуга параболы -> NURBS-кривая;
  • дуга гиперболы -> NURBS-кривая.

◆ LinePointTangentCurve()

void LinePointTangentCurve ( MbCartPoint pnt,
const MbCurve pCurve,
PArray< MbLine > &  pLine,
bool  lineAsCurve = false 
)

Построить касательные прямые.

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

Аргументы
[in]pnt- Точка, через которую проходит прямая.
[in]pCurve- Кривая, которой должна касаться построенная прямая.
[out]pLine- Набор прямых.
[in]lineAsCurve- Обрабатывать прямую, ломаную и отрезок как кривую в общеи мслучае.

◆ LineAngleTangentCurve()

void LineAngleTangentCurve ( double  angle,
const MbCurve pCurve,
PArray< MbLine > &  pLine 
)

Построить прямые под углом.

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

Аргументы
[in]angle- Угол к оси абсцисс.
[in]pCurve- Кривая, которой должна касаться построенная прямая.
[out]pLine- Набор прямых.

◆ LineTan2Circles()

ptrdiff_t LineTan2Circles ( const MbCartPoint centre1,
double  radius1,
const MbCartPoint centre2,
double  radius2,
MbLine pl,
MbCartPoint sp 
)

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

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

Аргументы
[in]centre1- Центр первой окружности.
[in]radius1- Радиус первой окружности.
[in]centre2- Центр второй окружности.
[in]radius2- Радиус второй окружности.
[out]pl- Результат - массив прямых.
[out]sp- Множество точек касания на второй кривой.
Возвращает
Количество прямых в массиве pl, равное количеству базовых точек в массиве sp.

◆ LineTangentTwoCurves()

void LineTangentTwoCurves ( const MbCurve pCurve1,
const MbCurve pCurve2,
PArray< MbLine > *  pLine,
SArray< MbCartPoint > *  secodnPnt 
)

Построить касательную прямую.

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

Аргументы
[in]pCurve1- Первая кривая, которой должна касаться построенная прямая.
[in]pCurve2- Вторая кривая, которой должна касаться построенная прямая.
[out]pLine- Результат - массив прямых.
[out]secodnPnt- Множество точек касания на второй кривой.
Возвращает
Количество прямых в массиве pLine, равное количеству точек в массиве secodnPnt.

◆ LineAngleTanCircle()

ptrdiff_t LineAngleTanCircle ( double  angle,
const MbCartPoint centre,
double  radius,
MbLine pLine 
)

Построить прямые под углом.

Построить прямые, проходящие под углом angle к оси 0X, касательные к окружности, заданной центром и радиусом.

Аргументы
[in]angle- Угол.
[in]centre- Центр окружности.
[in]radius- Радиус окружности.
[out]pLine- Результат - массив прямых.
Возвращает
Количество прямых в массиве pLine.

◆ SwapLines()

void SwapLines ( MbLine l1,
MbLine l2 
)
inline

Перестывить прямые.

Перестывить прямые местами.

Аргументы
[in]l1- Первая прямая.
[in]l2- Вторая прямая.

◆ NurbsConic_1()

MbCurve* NurbsConic_1 ( const MbCartPoint mbPoint0,
const MbCartPoint mbPoint1,
const MbCartPoint mbPoint2,
double  fDiscr 
)

Построить коническое сечение по двум точкам вершине и дискриминанту.

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

Аргументы
[in]mbPoint0- Координаты начала коники.
[in]mbPoint1- Координаты вершины угла, в который надо вписать конику.
[in]mbPoint2- Координаты конца коники.
[in]fDiscr- Дискриминант < 1, если задать дискриминант >= 1, то он автоматически будет сброшен до значения 0.99999999.
Возвращает
Указатель на построенную кривую
NULL, если не удалось построить конику для заданных параметров.

◆ NurbsConic_2()

MbCurve* NurbsConic_2 ( std::vector< MbCartPoint > &  vmbConicPoints,
const MbCartPoint mbVertex 
)

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

Построение конического сечения в виде NURBS-кривой 3-го порядка по трем точкам: началу, концу и средней точке кривой, а также вершине угла, в который должна быть вписана коника.

Аргументы
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbVertex- Координаты вершины угла, в который надо вписать конику.
Возвращает
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.

◆ NurbsConic_3()

MbCurve* NurbsConic_3 ( const std::vector< MbCartPoint > &  vmbConicPoints,
MbVector mbTangent1,
MbVector mbTangent2 
)

Построить коническое сечение по трем точкам и двум наклонам.

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

Аргументы
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbTangent1- Наклон в начале кривой.
[in]mbTangent2- Наклон в конце кривой.
Возвращает
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.

◆ NurbsConic_4()

MbCurve* NurbsConic_4 ( const MbCartPoint mbPoint1,
const MbCartPoint mbPoint2,
const MbVector mbTangent1,
const MbVector mbTangent2,
double  fDiscr 
)

Построить коническое сечение по двум точкам, двум наклонам и дискриминанту.

Построение конического сечения в виде NURBS-кривой 3-го порядка по 2-ум точкам, которые задают начало и конец кривой, двум наклонам, выходящим из этих точек и дискриминанту.

Аргументы
[in]mbPoint1- Координаты начала коники.
[in]mbPoint2- Координаты конца коники.
[in]mbTangent1- Наклон в начале коники.
[in]mbTangent2- Наклон в конце коники.
[in]fDiscr- Дискриминант < 1, если задать дискриминант >= 1, то он автоматически будет сброшен до значения 0.99999999.
Возвращает
Указатель на построенную кривую
NULL, если не удалось построить конику для заданных параметров.

◆ NurbsConic_5()

MbCurve* NurbsConic_5 ( const std::vector< MbCartPoint > &  vmbConicPoints,
MbVector mbTangent1,
size_t  tanPntNb = 1 
)

Построить коническое сечение по четырем точкам и наклону.

Построение конического сечения в виде NURBS-кривой 3-го порядка по 4-ем точкам и наклону в первой из них.
Путем подставления начальных точек в общее уравнение коники Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 и касательной к ней в начальной точке (x1, y1): (2Ax1 + By1 + D)(x - x1) + (2Cy1 + Bx1 + E)(y - y1) = 0 получим СЛАУ. Решив СЛАУ относительно параметров A,B,C,D,E, найдем искомую конику.

Аргументы
[in]vmbConicPoints- Контейнер точек коники: первая точка начальная, последняя - конечная; точек должно быть 4.
[in]mbTangent1- Наклон в точке коники.
[in]tanPntNb- Номер точке, в которой задан наклон.
Возвращает
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.

◆ NurbsConic_6()

MbCurve* NurbsConic_6 ( const std::vector< MbCartPoint > &  vmbConicPoints)

Построить коническое сечение по пяти точкам.

Построение конического сечения в виде NURBS-кривой 3-го порядка по 5-ти точкам.
Путем подставления начальных точек в общее уравнение коники Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 получим СЛАУ. Решив СЛАУ относительно параметров A,B,C,D,E, найдем искомую конику.

Аргументы
[in]vmbConicPoints- Контейнер точек коники: первая точка начальная, последняя - конечная; точек должно быть 5.
Возвращает
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.

◆ CreateSmoothFromBezier()

void CreateSmoothFromBezier ( const MbBezier bez,
RPArray< MbCurve > &  arCurve,
bool  bline 
)

Создать гладкую кривую из кривой Безье.

По исходной кривой Безье создается NURBS 4-го порядка. После NURBS разбивается в трижды кратных внутренних узлах, если они существуют.
Если bline принимает значение true, то проверяется вырожденность в линию. Если рассматриваемый сегмент или кривая целиком - линия, то выполняется преобразование в линию.

Аргументы
[in]bez- Кривая Безье.
[out]arCurve- Множество созданных кривых.
[in]bline- Флаг проверки вырожденности в линию.

◆ ConvertNurbsToCurveOfType()

MbCurve* ConvertNurbsToCurveOfType ( const MbNurbs nurbs,
MbePlaneType  type,
double  eps 
)

Создать кривую заданного типа базе NURBS-кривой.

Работает для двух типов: pt_LineSegment и pt_Arc. Если не удалось аппроксимировать с заданной точностью функция вернет NULL.

Аргументы
[in]nurbs- Исходная NURBS-кривая.
[in]type- Тип кривой, которую требуется создать.
[in]eps- Точность аппроксимации.
Возвращает
Указатель на кривую, если она была создана.

◆ CreateSurfaceHide()

void CreateSurfaceHide ( const MbSurface surf,
const MbPlacement3D eyePlace,
double  sag,
RPArray< MbCurve > &  hideCurves,
VERSION  version = Math::DefaultMathVersion() 
)

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

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