Определение точек скрещения кривых

Функция

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:

../../../../_images/9.14.1.png