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

Функции

MbResultType Line (const MbCartPoint &point1, const MbCartPoint &point2, MbCurve *&result)
 Создать прямую.
MbResultType Segment (const MbCartPoint &point1, const MbCartPoint &point2, 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)
 Является ли кривая прямолинейной независимо от ее параметризации.
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 Swap (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)
 Получить массив кривых плоской проекции очерка поверхности.

Функции

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

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

Аргументы:
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Прямая.
Возвращает:
Возвращает код результата операции.
MbResultType Segment ( const MbCartPoint point1,
const MbCartPoint point2,
MbCurve *&  result 
)

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

Аргументы:
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Отрезок.
Возвращает:
Возвращает код результата операции.
MbResultType Arc ( const MbCartPoint centre,
const SArray< MbCartPoint > &  points,
bool  curveClosed,
double  angle,
double &  a,
double &  b,
MbCurve *&  result 
)

Создать эллипс (окружность) или его дугу.
Контейнер points может содержать 0, 1, 2 элементов.

Аргументы:
[in]centre- Центр эллипса (окружности)
[in]points- Точки дуги.
[in]curveClosed- Замкнутость дуги.
[in]angle- Угол наклона.
[in,out]a- Длина большой полуоси.
[in,out]b- Длина малой полуоси.
[out]result- Эллипс (окружность) или его дуга.
Возвращает:
Возвращает код результата операции.
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- Кривая.
Возвращает:
Возвращает код результата операции.
MbResultType NurbsCurve ( const SArray< MbCartPoint > &  pointList,
const SArray< double > &  weightList,
size_t  degree,
const SArray< double > &  knotList,
bool  curveClosed,
MbCurve *&  result 
)

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

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

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

Аргументы:
[in]curve- Исходная кривая.
[out]result- Сплайновая копия кривой.
Возвращает:
Возвращает код результата операции.
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- Результат построения.
Возвращает:
Возвращает код результата операции.
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- Косинусоида.
Возвращает:
Возвращает код результата операции.
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- Косинусоида.
Возвращает:
Возвращает код результата операции.
MbResultType CreateContour ( MbCurve curve,
MbContour *&  result 
)

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

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

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

Аргументы:
[in]curve- Исходная кривая.
Возвращает:
Возвращает модифицированную копию кривой, если получилось ее создать.
MbContour* DuplicateContour ( const MbContour cntr,
bool  modifySegments,
MbSNameMaker names = NULL 
)

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

Аргументы:
[in]cntr- Исходный контур.
[in]modifySegments- Флаг разрешения замены и слияния сегментов.
[in]names- Именователь, синхронизированный с контуром.
Возвращает:
Возвращает модифицированнную копию контура, если получилось его создать.
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- Версия исполнения.
Возвращает:
Возвращает эквидистантный контур, если получилось его создать.
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.
Возвращает:
Возвращает эквидистантный контур, если получилось его создать.
bool CurveTrim ( MbCurve curve,
double  t1,
double  t2,
double  eps = METRIC_PRECISION 
)

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

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

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

Аргументы:
[in]curve- Добавляемая кривая
[in,out]contour- Модифицируемый контур.
[in]toEnd- Флаг места добавления кривой.
Возвращает:
Возвращает код результата операции.
void CurveSection ( const MbCurve3D curve,
const MbPlacement3D place,
SArray< MbCartPoint > &  result,
RPArray< MbCurve > &  resultCurve 
)

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

Аргументы:
[in]curve- Кривая.
[in]place- Система координат плоскости.
[out]result- Множество точек на плоскости.
[out]resultCurve- Множество кривых на плоскости.
void SurfaceSection ( const MbSurface surface,
const MbPlacement3D place,
RPArray< MbCurve > &  result,
VERSION  version = Math::DefaultMathVersion() 
)

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

Аргументы:
[in]surface- Поверхность.
[in]place- Система координат плоскости.
[out]result- Множество кривых на плоскости.
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- Двумерная кривая.
Возвращает:
Возвращает код результата операции.
MbResultType SurfaceBoundContour ( const MbSurface surface,
const MbCurve3D spaceCurve,
VERSION  version,
MbContour *&  result 
)

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

Аргументы:
[in]surface- Поверхность.
[in]spaceCurve- Пространственная кривая.
[in]version- Версия изготовления.
[out]result- Двумерный контур на поверхности.
Возвращает:
Возвращает код результата операции.
bool IsLikeStraightLine ( const MbCurve curve,
double  eps 
)

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

Аргументы:
[in]curve- Кривая.
[in]eps- Точность.
ptrdiff_t CircleTanLineLineRad ( MbLine pl1,
MbLine pl2,
double  rad,
MbTempCircle pc 
)

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

Аргументы:
[in]pl1- Первая прямая.
[in]pl2- Вторая прямая.
[in]rad- Радиус окружности.
[out]pc- Результат - массив окружностей с искомым центром.
Возвращает:
Количество окружностей в массиве.
ptrdiff_t CircleTanLineCircleRadius ( const MbLine pl1,
const MbArc pc1,
double  rad,
MbTempCircle pc 
)

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

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

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

Аргументы:
[in]pc1- Первая окружность.
[in]pc2- Вторая окружность.
[in]rad- Радиус окружностей с искомым центром.
[out]pc- Результат - массив окружностей с искомым центром.
Возвращает:
Количество окружностей в массиве.
void CircleTanCurveCentre ( const MbCurve pCurve,
MbCartPoint pnt,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve- Кривая, касающаяся окружности.
[in]pnt- Центр окружности.
[out]pCircle- Набор окружностей.
void CircleTangentCurveTwoPoints ( const MbCurve pCurve,
MbCartPoint on1,
MbCartPoint on2,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve- Кривая, касающаяся окружности.
[in]on1- Точка на окружности.
[in]on2- Точка на окружности.
[out]pCircle- Набор окружностей.
void CircleTangentCurveRPointOn ( const MbCurve pCurve,
double  radius,
MbCartPoint on,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve- Кривая, касающаяся окружности.
[in]radius- Радиус.
[in]on- Точка на окружности.
[out]pCircle- Набор окружностей.
void CircleTanTwoCurvesRadius ( const MbCurve pCurve1,
const MbCurve pCurve2,
double  rad,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve1- Первая кривая, касающаяся окружности.
[in]pCurve2- Вторая кривая, касающаяся окружности.
[in]rad- Радиус.
[out]pCircle- Набор окружностей.
void CircleTanTwoCurvesPointOn ( const MbCurve pCurve1,
const MbCurve pCurve2,
const MbCartPoint pOn,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve1- Первая кривая, касающаяся окружности.
[in]pCurve2- Вторая кривая, касающаяся окружности.
[in]pOn- Точка на окружности.
[out]pCircle- Набор окружностей.
void CircleOriginOneTangentTwo ( const MbCurve pCurve1,
const MbCurve pCurve2,
const MbCartPoint pp,
RPArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve1- Первая кривая, содержащая центр окружности.
[in]pCurve2- Вторая кривая, касающаяся окружности.
[in]pp- Точка на окружности.
[out]pCircle- Набор окружностей.
void CircleTanCurvePointOnAngle ( MbCurve curve,
MbCartPoint p1,
double  angle,
PArray< MbTempCircle > &  circles 
)

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

Аргументы:
[in]curve- Кривая, касающаяся окружности.
[in]p1- Точка на окружности.
[in]angle- Угол, образованный тремя точками:
заданной точкой на окружности p1,
центром окружности,
точкой касания.
[out]circles- Набор окружностей.
void ArcTangentCurveTwoPoints ( const MbCurve pCurve,
MbCartPoint on1,
MbCartPoint on2,
PArray< MbArc > &  arc 
)

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

Аргументы:
[in]pCurve- Кривая, касающаяся дуг.
[in]on1- Первая точка на дуге.
[in]on2- Вторая точка на дуге.
[out]arc- Набор дуг.
void ArcTangentCurveRPointOn ( const MbCurve pCurve,
double  radius,
MbCartPoint on,
PArray< MbArc > &  arc 
)

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

Аргументы:
[in]pCurve- Кривая, касающаяся дуг.
[in]radius- Радиус.
[in]on- Точка на дуге.
[out]arc- Набор дуг.
void ArcTangentCurveContinue ( MbLine line,
MbCartPoint p2,
PArray< MbArc > &  arc 
)

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

Аргументы:
[in]line- Кривая для сопряжения.
[in]p2- Точка на дуге.
[out]arc- Множество с дугой окружности.
void ArcTangentCurveRadContinue ( MbLine line,
double  rad,
MbCartPoint p2,
PArray< MbArc > &  arc 
)

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

Аргументы:
[in]line- Кривая для сопряжения.
[in]rad- Радиус.
[in]p2- Точка на дуге.
[out]arc- Множество с дугой окружности.
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- Набор окружностей.
void CreateNewCircles ( PArray< MbTempCircle > &  cTmp,
PArray< MbArc > &  pCircle 
)

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

Аргументы:
[in,out]cTmp- Набор временных окружностей. Множество очищается.
[out]pCircle- Набор дуг окружностей, созданных соответственно временным окружностям.
void LineParallelPoint ( const MbCartPoint p,
const MbLine pl,
MbLine pl_par 
)

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

Аргументы:
[in]p- Точка на прямой.
[in]pl- Параллельная прямая.
[out]pl_par- Результат - прямая, параллельная pl, через точку p.
void LineParallelDistance ( double  delta,
const MbLine pl,
MbLine pl_par 
)

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

Аргументы:
[in]delta- Расстояние до параллельной прямой.
[in]pl- Параллельная прямая.
[out]pl_par- Результат - прямая, параллельная pl, на расстоянии delta.
int LineBisector ( const MbCartPoint p,
const MbLine pl1,
const MbLine pl2,
MbLine pl3 
)

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

Аргументы:
[in]p- Точка на прямой.
[in]pl1- Прямая, задающая сторону угла.
[in]pl2- Прямая, задающая сторону угла.
[out]pl3- Результат.
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- Результат - построенная прямая.
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- Угол наклона первой полуоси.
void LinePointPerpCurve ( const MbCartPoint pnt,
const MbCurve pCurve,
PArray< MbLine > &  pLine 
)

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

Аргументы:
[in]pnt- Точка на прямой.
[in]pCurve- Перпендикулярная прямая.
[out]pLine- Результат - массив прямых.
int LinePointTangentCircle ( const MbCartPoint p,
const MbCartPoint centre,
double  radius,
MbLine pl 
)

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

Аргументы:
[in]p- Точка на прямой.
[in]centre- Центр окружности.
[in]radius- Радиус окружности.
[out]pl- Результат - массив прямых.
Возвращает:
Количество прямых.
void CircleCentreOnCurveRadPointOn ( const MbCurve pCurve,
double  radius,
const MbCartPoint on,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve- Кривая, содержащая центр окружности.
[in]radius- Радиус окружности.
[in]on- Точка на окружности.
[out]pCircle- Результат - набор окружностей.
void CircleCentreOnCurveTwoPoints ( const MbCurve pCurve,
const MbCartPoint on1,
const MbCartPoint on2,
PArray< MbTempCircle > &  pCircle 
)

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

Аргументы:
[in]pCurve- Кривая, содержащая центр окружности.
[in]on1- Точка на окружности.
[in]on2- Точка на окружности.
[out]pCircle- Результат - набор окружностей.
int Arc2PointsRadius ( const MbCartPoint p1,
const MbCartPoint p2,
double  rad,
bool  clockwise,
MbArc arc 
)

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

Аргументы:
[in]p1- Точка на окружности.
[in]p2- Точка на окружности.
[in]rad- Радиус окружности.
[in]clockwise- Признак направления против часовой стенки.
[out]arc- Результат - массив окружностей.
Возвращает:
Количество окружностей в массиве.
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-кривая.
void LinePointTangentCurve ( MbCartPoint pnt,
const MbCurve pCurve,
PArray< MbLine > &  pLine,
bool  lineAsCurve = false 
)

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

Аргументы:
[in]pnt- Точка, через которую проходит прямая.
[in]pCurve- Кривая, которой должна касаться построенная прямая.
[out]pLine- Набор прямых.
[in]lineAsCurve- Обрабатывать прямую, ломаную и отрезок как кривую в общеи мслучае.
void LineAngleTangentCurve ( double  angle,
const MbCurve pCurve,
PArray< MbLine > &  pLine 
)

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

Аргументы:
[in]angle- Угол к оси абсцисс.
[in]pCurve- Кривая, которой должна касаться построенная прямая.
[out]pLine- Набор прямых.
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.
void LineTangentTwoCurves ( const MbCurve pCurve1,
const MbCurve pCurve2,
PArray< MbLine > *  pLine,
SArray< MbCartPoint > *  secodnPnt 
)

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

Аргументы:
[in]pCurve1- Первая кривая, которой должна касаться построенная прямая.
[in]pCurve2- Вторая кривая, которой должна касаться построенная прямая.
[out]pLine- Результат - массив прямых.
[out]secodnPnt- Множество точек касания на второй кривой.
Возвращает:
Количество прямых в массиве pLine, равное количеству точек в массиве secodnPnt.
ptrdiff_t LineAngleTanCircle ( double  angle,
const MbCartPoint centre,
double  radius,
MbLine pLine 
)

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

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

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

Аргументы:
[in]l1- Первая прямая.
[in]l2- Вторая прямая.
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, если не удалось построить конику для заданных параметров.
MbCurve* NurbsConic_2 ( std::vector< MbCartPoint > &  vmbConicPoints,
const MbCartPoint mbVertex 
)

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

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbVertex- Координаты вершины угла, в который надо вписать конику.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
MbCurve* NurbsConic_3 ( const std::vector< MbCartPoint > &  vmbConicPoints,
MbVector mbTangent1,
MbVector mbTangent2 
)

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

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbTangent1- Наклон в начале кривой.
[in]mbTangent2- Наклон в конце кривой.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
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, если не удалось построить конику для заданных параметров.
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, если не удалось постороить конику для заданных параметров.
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, если не удалось постороить конику для заданных параметров.
void CreateSmoothFromBezier ( const MbBezier bez,
RPArray< MbCurve > &  arCurve,
bool  bline 
)

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

Аргументы:
[in]bez- Кривая Безье.
[out]arCurve- Множество созданных кривых.
[in]bline- Флаг проверки вырожденности в линию.
MbCurve* ConvertNurbsToCurveOfType ( const MbNurbs nurbs,
MbePlaneType  type,
double  eps 
)

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

Аргументы:
[in]nurbs- Исходная NURBS-кривая.
[in]type- Тип кривой, которую требуется создать.
[in]eps- Точность аппроксимации.
Возвращает:
Указатель на кривую, если она была создана.
void CreateSurfaceHide ( const MbSurface surf,
const MbPlacement3D eyePlace,
double  sag,
RPArray< MbCurve > &  hideCurves 
)

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

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