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

Классы

class  MbSpaceParamPnt
 Пространственно-параметрическая точка. Подробнее...
class  MbPointOnCurve< Curve >
 Точка на кривой. Подробнее...
class  MbCrossPoint
 Точка пересечения двух кривых. Подробнее...

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

enum  MbeIntersectionType { ipt_Simple = 0, ipt_Tangent = 1 }
 Типы точек пересечения. Подробнее...

Функции

MbResultType PointsOnSurface (const MbSurface &surface, MbeStepType stepType, double uValue, double vValue, bool truncateByBounds, PArray< SArray< MbLocPnt > > &result)
 Создать точки на поверхности.
MbResultType PointsOnSurface (const MbSurface &surface, MbeItemGridType &gridType, const MbCartPoint &uv0, double angle, MbeStepType stepType, double step1, double step2, bool truncateByBounds, PArray< SArray< MbLocPnt > > &result, size_t maxPntsCnt=ARRAY_MAX_COUNT)
 Создать точки на поверхности.
void DefinePointsOnSurfaceCounts (const MbSurface &surface, size_t &uPntsCnt, size_t &vPntsCnt)
 Определить умолчательную разбивку поверхности.
MbeNewtonResult IntersectionPoint (const MbSurface &surf0, bool ext0, const MbSurface &surf1, bool ext1, const MbSurface &surf2, bool ext2, MbCartPoint &uv0, MbCartPoint &uv1, MbCartPoint &uv2)
 Найти точку пересечения трех поверхностей.
void IntersectionPoints (const MbSurface &surf, bool surfExt, const MbCurve3D &curv, bool curveExt, SArray< MbCartPoint > &uv, SArray< double > &tt, bool touchInclude=false)
 Найти все точки пересечения поверхности и кривой.
void FastLineLine (const MbLine &line1, const MbLine &line2, MbCartPoint &result)
 Найти точку пересечения двух прямых.
int LineLine (const MbLine &line1, const MbLine &line2, MbCartPoint &result)
 Найти точку пересечения двух прямых.
int LineLine (const MbLine &line1, const MbLine &line2, MbCrossPoint &result)
 Найти точку пересечения двух прямых.
int LineLineSeg (const MbLine &line, const MbLineSegment &lseg, MbCrossPoint &result)
 Найти точку пересечения прямой и отрезка.
int LineCircle (const MbLine &line, const MbCartPoint &centre, double radius, MbCrossPoint *result)
 Найти точки пересечения прямой и окружности.
ptrdiff_t IntersectTwoCurves (const MbCurve &pCurve1, const MbCurve &pCurve2, SArray< MbCrossPoint > &result, bool touchInclude=true, double epsilon=Math::LengthEps *METRIC_DELTA, bool allowInaccuracy=true)
 Найти точки пересечения двух кривых.
ptrdiff_t CurveCurveIntersection (const MbCurve &curve1, const MbCurve &curve2, SArray< double > &result1, SArray< double > &result2, double xEpsilon, double yEpsilon, bool touchInclude, bool allowInaccuracy=true)
 Найти точки пересечения двух кривых.
void CurveSelfIntersect (const MbCurve &curve, double xEpsilon, double yEpsilon, SArray< double > &result1, SArray< double > &result2, VERSION version=Math::DefaultMathVersion())
 Найти точки самопересечения кривой.
void RemoveAllTouchParams (const MbCurve &curve1, const MbCurve &curve2, SArray< MbCrossPoint > &result, double eps=PARAM_NEAR)
 Удалить точки касания.
ptrdiff_t CurveCurveIntersection (const MbCurve3D &curve1, const MbCurve3D &curve2, SArray< double > &result1, SArray< double > &result2, double mEps=Math::metricRegion)
 Найти точки пересечения двух кривых.
bool IsSelfIntersect (const MbCurve3D &curve, double mEps=Math::metricRegion)
 Проверить кривую на самопересечение.
void FilterTouchParams (const MbCurve3D &curve1, const MbCurve3D &curve2, SArray< double > &result1, SArray< double > &result2, double mEps=Math::metricRegion)
 Убрать касательные точки пересечения.
ptrdiff_t CurveCurveCrossing (const MbCurve3D &curve1, const MbCurve3D &curve2, SArray< double > &result1, SArray< double > &result2, double epsilon=Math::metricRegion)
 Найти точки скрещения двух кривых.
bool PointProjectionRelativeOuterLoop (const MbSurface &surface, const MbCartPoint3D &pnt, bool byOuterRectOnly, MbCartPoint &result)
 Найти проекцию точки на поверхность относительно внешнего контура поверхности.
bool IsMultipleProjection (const MbSurface &surface, const MbCartPoint3D &result)
 Является ли проекция точки точно неоднозначной.

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

Типы точек пересечения.

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

Обыкновенная точка пересечения.

ipt_Tangent 

Касательная точек пересечения.


Функции

MbResultType PointsOnSurface ( const MbSurface surface,
MbeStepType  stepType,
double  uValue,
double  vValue,
bool  truncateByBounds,
PArray< SArray< MbLocPnt > > &  result 
)

Создать группу точек на поверхности.

Аргументы:
[in]surface- Поверхность-источник.
[in]stepType- Тип шага по поверхности.
[in]uValue- Величина шага по u или количество точек по u при шаге по параметру
[in]vValue- Величина шага по v или количество точек по v при шаге по параметру.
[in]truncateByBounds- Усечь границами поверхности.
[out]result- Индексированные пространственно-параметрические точки.
Возвращает:
Возвращает код результата операции.
MbResultType PointsOnSurface ( const MbSurface surface,
MbeItemGridType gridType,
const MbCartPoint uv0,
double  angle,
MbeStepType  stepType,
double  step1,
double  step2,
bool  truncateByBounds,
PArray< SArray< MbLocPnt > > &  result,
size_t  maxPntsCnt = ARRAY_MAX_COUNT 
)

Создать группу точек на поверхности.

Аргументы:
[in]surface- Поверхность-источник.
[in]gridType- Тип cетки на поверхности.
[in]uv0- Центральная точка сетки
[in]angle- Угол поворота сетки относительно направления U (в радианах)
[in]stepType- Тип шага по поверхности.
[in]step1- Величина шага по первому направлению
[in]step2- Величина шага по второму направлению
[in]truncateByBounds- Усечь границами поверхности.
[out]result- Индексированные пространственно-параметрические точки.
[in]maxPntsCnt- Максимально допустимое количество точек.
Возвращает:
Возвращает код результата операции.
void DefinePointsOnSurfaceCounts ( const MbSurface surface,
size_t &  uPntsCnt,
size_t &  vPntsCnt 
)

Определить умолчательную разбивку поверхности
(вспомогательная функция для функции PointsOnSurface).

Аргументы:
[in]surface- Исходная поверхность.
[out]uPntsCnt- Количество разбиений по u.
[out]vPntsCnt- Количество разбиений по v.
MbeNewtonResult IntersectionPoint ( const MbSurface surf0,
bool  ext0,
const MbSurface surf1,
bool  ext1,
const MbSurface surf2,
bool  ext2,
MbCartPoint uv0,
MbCartPoint uv1,
MbCartPoint uv2 
)

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

Аргументы:
[in]surf0- Первая поверхность.
[in]ext0- Флаг поиска на продолжении первой поверхности.
[in]surf1- Вторая поверхность.
[in]ext1- Флаг поиска на продолжении второй поверхности.
[in]surf2- Третья поверхность.
[in]ext2- Флаг поиска на продолжении третьей поверхности.
[in,out]uv0- Началальное приближение и результат на поверхности surf0.
[in,out]uv1- Началальное приближение и результат на поверхности surf1.
[in,out]uv2- Началальное приближение и результат на поверхности surf2.
Возвращает:
Возвращает код результата итерационного поиска точки пересечения.
void IntersectionPoints ( const MbSurface surf,
bool  surfExt,
const MbCurve3D curv,
bool  curveExt,
SArray< MbCartPoint > &  uv,
SArray< double > &  tt,
bool  touchInclude = false 
)

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

Аргументы:
[in]surf- Поверхность.
[in]surfExt- Искать на продолжении поверхности.
[in]curv- Кривая.
[in]curveExt- Искать на продолжении кривой.
[out]uv- Параметры точек пересечения на поверхности.
[out]tt- Параметры точек пересечения на кривой.
[in]touchInclude- Считать касания пересечениями.
void FastLineLine ( const MbLine line1,
const MbLine line2,
MbCartPoint result 
) [inline]

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

Аргументы:
[in]line1- Первая прямая.
[in]line2- Вторая прямая.
[out]result- Точка пересечения.
int LineLine ( const MbLine line1,
const MbLine line2,
MbCartPoint result 
)

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

Аргументы:
[in]line1- Первая прямая.
[in]line2- Вторая прямая.
[out]result- Точка пересечения.
Возвращает:
Возвращает результат пересечения:
1 - Прямые пересекаются.
0 - Прямые параллельны или совпадают.
int LineLine ( const MbLine line1,
const MbLine line2,
MbCrossPoint result 
)

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

Аргументы:
[in]line1- Первая прямая.
[in]line2- Вторая прямая.
[out]result- Точка пересечения.
Возвращает:
Возвращает результат пересечения:
1 : прямые пересекаются;
0 : прямые параллельны;
1 : прямые совпадают - касательная точка пересечения.
int LineLineSeg ( const MbLine line,
const MbLineSegment lseg,
MbCrossPoint result 
)

Найти точку пересечения прямой и отрезка.
Отрезок может быть параллелен прямой или лежать на ней.

Аргументы:
[in]line- Прямая.
[in]lseg- Отрезок.
[out]result- Точка пересечения.
Возвращает:
Возвращает результат пересечения:
1 : прямая и отрезок пересекаются;
0 : прямая и отрезок параллельны;
1 : отрезок лежит на прямой - касательная точка пересечения.
int LineCircle ( const MbLine line,
const MbCartPoint centre,
double  radius,
MbCrossPoint result 
)

Найти параметры точек пересечения прямой и окружности.

Аргументы:
[in]line- Прямая.
[in]centre- Центр окружности.
[in]radius- Радиус окружности.
[out]result- Точки пересечения (указатель на массив из двух(!) элементов).
Возвращает:
Возвращает количество найденных пересечений.
ptrdiff_t IntersectTwoCurves ( const MbCurve pCurve1,
const MbCurve pCurve2,
SArray< MbCrossPoint > &  result,
bool  touchInclude = true,
double  epsilon = Math::LengthEps *METRIC_DELTA,
bool  allowInaccuracy = true 
)

Найти параметры точек пересечения двух произвольных кривых.
Общий метод вызывается, если нет частной функции пересечения.

Аргументы:
[in]pCurve1- Первая кривая.
[in]pCurve2- Вторая кривая.
[out]result- Множество точек пересечения.
[in]touchInclude- Считать касания пересечениями.
[in]epsilon- Точность совпадения точек пересечения кривых.
[in]allowInaccuracy- Разрешить понижать входную точность.
Возвращает:
Количество найденных пересечений.
Предупреждения:
Применяется для двумерных построений, аналог CurveCurveIntersection.
ptrdiff_t CurveCurveIntersection ( const MbCurve curve1,
const MbCurve curve2,
SArray< double > &  result1,
SArray< double > &  result2,
double  xEpsilon,
double  yEpsilon,
bool  touchInclude,
bool  allowInaccuracy = true 
)

Найти параметры точек пересечения двух произвольных кривых.
Общий метод вызывается, если нет частной функции пересечения.

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]result1- Параметры пересечений первой кривой.
[out]result2- Параметры пересечений второй кривой.
[in]xEpsilon- Точность по x.
[in]yEpsilon- Точность по y.
[in]touchInclude- Считать касания пересечениями.
[in]allowInaccuracy- Разрешить нахождение решения с меньшей точностью при невозможности удовлетворить указанной.
Возвращает:
Количество найденных пересечений.
Предупреждения:
Применяется для трехмерных построений, аналог IntersectTwoCurves.
void CurveSelfIntersect ( const MbCurve curve,
double  xEpsilon,
double  yEpsilon,
SArray< double > &  result1,
SArray< double > &  result2,
VERSION  version = Math::DefaultMathVersion() 
)

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

Аргументы:
[in]curve- Кривая.
[in]xEpsilon- Точность по x.
[in]yEpsilon- Точность по y.
[out]result1- Множество параметров самопересечения.
[out]result2- Множество параметров самопересечения.
[in]version- Версия операции.
void RemoveAllTouchParams ( const MbCurve curve1,
const MbCurve curve2,
SArray< MbCrossPoint > &  result,
double  eps = PARAM_NEAR 
)

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

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[in,out]result- Множество точек пересечения.
[in]eps- Погрешность для функции проверки параллельности касательных RoundColinear.
ptrdiff_t CurveCurveIntersection ( const MbCurve3D curve1,
const MbCurve3D curve2,
SArray< double > &  result1,
SArray< double > &  result2,
double  mEps = Math::metricRegion 
)

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

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]result1- Параметры точек пересечения для первой кривой.
[out]result2- Параметры точек пересечения для второй кривой.
[in]mEps- Возможная максимальная погрешность найденных пересечений.
Возвращает:
Количество найденных пересечений.
bool IsSelfIntersect ( const MbCurve3D curve,
double  mEps = Math::metricRegion 
)

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

Аргументы:
[in]curve- Кривая.
[in]mEps- Возможная максимальная погрешность найденных самопересечений.
Возвращает:
Возвращает true, если кривая самопересекается.
void FilterTouchParams ( const MbCurve3D curve1,
const MbCurve3D curve2,
SArray< double > &  result1,
SArray< double > &  result2,
double  mEps = Math::metricRegion 
)

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

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]result1- Параметры точек пересечения для первой кривой.
[out]result2- Параметры точек пересечения для второй кривой.
[in]mEps- Возможная максимальная погрешность найденных пересечений.
ptrdiff_t CurveCurveCrossing ( const MbCurve3D curve1,
const MbCurve3D curve2,
SArray< double > &  result1,
SArray< double > &  result2,
double  epsilon = Math::metricRegion 
)

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

Аргументы:
[in]curve1- Первая кривая.
[in]curve2- Вторая кривая.
[out]result1- Параметры точек скрещения для первой кривой.
[out]result2- Параметры точек скрещения для второй кривой.
Возвращает:
Количество найденных скрещений.
bool PointProjectionRelativeOuterLoop ( const MbSurface surface,
const MbCartPoint3D pnt,
bool  byOuterRectOnly,
MbCartPoint result 
)

Найти проекцию пространственной точки на поверхность в виде двумерной точки на поверхности относительно внешнего контура поверхности.

Аргументы:
[in]surface- Поверхность.
[in]pnt- Пространственная точка.
[in]byOuterRectOnly- Классифицировать проекцию только относитально внешнего габаритного прямоугольника.
[out]result- Двумерная параметрическая точка на поверхности.
Возвращает:
Возвращает true, если найдена нормальная проекция точки на поверхность.
bool IsMultipleProjection ( const MbSurface surface,
const MbCartPoint3D result 
)

Является ли проекция точки неоднозначной при проецировании в области определения поверхности.

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