В этом разделе представлены различные пересечения в пространстве. Первая функция определяет пересекаются ли точка и шар: bool isIntersect ( const Vector3d & p, const Sphere3d & fig );Следующие функции находят точку пересечения плоскостей, прямых и отрезков, если она единственная: Def<Vector3d> intersection ( const Plane3d & plane1, const Plane3d & plane2, const Plane3d & plane3 ); Def<Vector3d> intersection ( const Plane3d & plane, const Line3d & line ); Def<Vector3d> intersection ( const Plane3d & plane, const Segment3d & seg );Следующая функция находит пересечение двух плоскостей: Def<Line3d> intersection ( const Plane3d & plane1, const Plane3d & plane2 );Функция cut отсекает заданной плоскостью часть отрезка находящуюся в положительном полупространстве. Если там находятся оба конца отрезка, то функция возвращает неопределённый отрезок: Def<Segment3d> cut ( const Plane3d & plane, const Segment3d & seg ); Следующие функции находят пересечения прямых и отрезков с шаром: Def<Segment3d> intersection ( const Line3d & line, const Sphere3d & sphere ); Def<Segment3d> intersection ( const Segment3d & seg, const Sphere3d & sphere ); Следующие функции находят пересечения прямых и отрезков с эллипсоидом: Def<Segment3d> intersection ( const Line3d & line, const Ellipsoid3d & e ); Def<Segment3d> intersection ( const Segment3d & seg, const Ellipsoid3d & e ); Следующая функция находит пересечение многогранника и плоскости: bool intersection ( const Polyhedron & poly, const Plane3d & plane, DynArrRef<DynArray<Vector3d> > & res );В результате будет получено множество ( возможно пустое ) многоугольников в пространстве. Функция cut отсекает данной плоскостью часть многогранника или, другими словами, находит пересечение многогранника и отрицательного полупространства, заданного плоскостью: bool cut ( const Polyhedron & poly, const Plane3d & plane, Polyhedron & res, int info = 0 );Ссылки poly и res должны ссылаться на разные объекты. Новые грани помечаются значением параметра info. Следующая функция находит пересечение выпуклого многогранника с произвольным: bool intersect1c ( const Polyhedron & conv, const Polyhedron & poly, Polyhedron & res );Здесь ссылка res может ссылаться на объект conv или poly. Описание класса Vector3d находится здесь.
В приложении DEMO можно посмотреть на результаты некоторых пересечений. Наверх |