libigl v2.5.0
|
Class for computing the self-intersections of a mesh. More...
#include <SelfIntersectMesh.h>
Public Types | |
typedef CGAL::Point_3< Kernel > | Point_3 |
typedef CGAL::Segment_3< Kernel > | Segment_3 |
typedef CGAL::Triangle_3< Kernel > | Triangle_3 |
typedef CGAL::Plane_3< Kernel > | Plane_3 |
typedef CGAL::Tetrahedron_3< Kernel > | Tetrahedron_3 |
typedef CGAL::Point_2< Kernel > | Point_2 |
typedef CGAL::Segment_2< Kernel > | Segment_2 |
typedef CGAL::Triangle_2< Kernel > | Triangle_2 |
typedef CGAL::Exact_intersections_tag | Itag |
typedef std::vector< Triangle_3 > | Triangles |
typedef Triangles::iterator | TrianglesIterator |
typedef Triangles::const_iterator | TrianglesConstIterator |
typedef CGAL::Box_intersection_d::Box_with_handle_d< double, 3, TrianglesIterator > | Box |
typedef DerivedF::Index | Index |
typedef std::vector< std::pair< Index, CGAL::Object > > | ObjectList |
typedef std::vector< Index > | IndexList |
typedef std::pair< Index, Index > | EMK |
typedef std::vector< Index > | EMV |
typedef std::map< EMK, EMV > | EdgeMap |
Public Member Functions | |
SelfIntersectMesh (const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const RemeshSelfIntersectionsParam ¶ms, Eigen::PlainObjectBase< DerivedVV > &VV, Eigen::PlainObjectBase< DerivedFF > &FF, Eigen::PlainObjectBase< DerivedIF > &IF, Eigen::PlainObjectBase< DerivedJ > &J, Eigen::PlainObjectBase< DerivedIM > &IM) | |
Constructs (VV,FF) a new mesh with self-intersections of (V,F) subdivided. | |
void | box_intersect (const Box &a, const Box &b) |
Callback function called during box self intersections test. | |
void | process_intersecting_boxes () |
Process all of the intersecting boxes. | |
Static Public Member Functions | |
static void | box_intersect_static (SelfIntersectMesh *SIM, const Box &a, const Box &b) |
Static function that captures a SelfIntersectMesh instance to pass to cgal. | |
Public Attributes | |
const Eigen::MatrixBase< DerivedV > & | V |
const Eigen::MatrixBase< DerivedF > & | F |
Index | count |
Triangles | T |
IndexList | lIF |
std::map< Index, ObjectList > | offending |
std::vector< std::pair< TrianglesIterator, TrianglesIterator > > | candidate_triangle_pairs |
RemeshSelfIntersectionsParam | params |
Class for computing the self-intersections of a mesh.
Kernel | is a CGAL kernel like: CGAL::Exact_predicates_inexact_constructions_kernel or CGAL::Exact_predicates_exact_constructions_kernel |
typedef CGAL::Point_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Point_3 |
typedef CGAL::Segment_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Segment_3 |
typedef CGAL::Triangle_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangle_3 |
typedef CGAL::Plane_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Plane_3 |
typedef CGAL::Tetrahedron_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Tetrahedron_3 |
typedef CGAL::Point_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Point_2 |
typedef CGAL::Segment_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Segment_2 |
typedef CGAL::Triangle_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangle_2 |
typedef CGAL::Exact_intersections_tag igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Itag |
typedef std::vector<Triangle_3> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangles |
typedef Triangles::iterator igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::TrianglesIterator |
typedef Triangles::const_iterator igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::TrianglesConstIterator |
typedef CGAL::Box_intersection_d::Box_with_handle_d<double,3,TrianglesIterator> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Box |
typedef DerivedF::Index igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Index |
typedef std::vector<std::pair<Index, CGAL::Object> > igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::ObjectList |
typedef std::vector<Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::IndexList |
typedef std::pair<Index,Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EMK |
typedef std::vector<Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EMV |
typedef std::map<EMK,EMV> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EdgeMap |
|
inline |
Constructs (VV,FF) a new mesh with self-intersections of (V,F) subdivided.
[in] | V | V by 3 list of vertex positions |
[in] | F | F by 3 list of triangle indices into V |
[in] | params | parameters |
[out] | VV | #VV by 3 list of vertex positions |
[out] | FF | #FF by 3 list of triangle indices into VV |
[out] | IF | #IF by 2 list of edge indices into VV |
[out] | J | F list of indices into FF of birth parents |
[out] | IM | #VV list of indices into V of birth parents |
|
inline |
Callback function called during box self intersections test.
Means boxes a and b intersect. This method then checks if the triangles in each box intersect and if so, then processes the intersections
[in] | a | box containing a triangle |
[in] | b | box containing a triangle |
|
inline |
Process all of the intersecting boxes.
|
inlinestatic |
Static function that captures a SelfIntersectMesh instance to pass to cgal.
[in] | SIM | pointer to SelfIntersectMesh instance |
[in] | a | box containing a triangle |
[in] | b | box containing a triangle |
const Eigen::MatrixBase<DerivedV>& igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::V |
const Eigen::MatrixBase<DerivedF>& igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::F |
Index igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::count |
Triangles igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::T |
IndexList igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::lIF |
std::map<Index,ObjectList> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::offending |
std::vector<std::pair<TrianglesIterator, TrianglesIterator> > igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::candidate_triangle_pairs |
RemeshSelfIntersectionsParam igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::params |