Определение точек скрещения кривых
Функция
ptrdiff_t CurveCurveCrossing( const MbCurve3D & curve1,
const MbCurve3D & curve2,
SArray<double> & result1,
SArray<double> & result2,
double epsilon = Math::metricRegion );
находит точки скрещения двух пространственных кривых и возвращает параметры этих точек на каждой кривой.
Точками скрещения называются такие точки кривых, для которых отрезок, соединяющий эти точки, перпендикулярен касательным к обеим кривым.
Параметры функции:
curve1 – первая кривая;
curve2 – вторая кривая;
result1 – параметры точек скрещения на первой кривой;
result2 – параметры точек скрещения на второй кривой;
epsilon – точность поиска решения.
Возвращаемое значение – количество найденных скрещений.
Параметры найденных точек скрещения для первой кривой записываются в массив result1, а для второй кривой – в массив result2. В частном случае геометрического пересечения кривых отрезок между точками скрещения вырождается в нулевую длину, и точки скрещения становятся точками пересечения. Помимо собственных скрещений, функция CurveCurveCrossing() возвращает такие точки скрещения кривых, для которых отрезок, соединяющий эти точки, перпендикулярен касательным к кривым в этих точках.
Например, на рисунке функция CurveCurveCrossing() возвращает четыре пары параметров скрещения: на окружности curve1 им соответствуют точки p1, p2, p3, p4, а на отрезке curve2 точки r1, r2, r3, r4: