libigl v2.5.0
Loading...
Searching...
No Matches
igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM > Class Template Reference

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_3Triangles
 
typedef Triangles::iterator TrianglesIterator
 
typedef Triangles::const_iterator TrianglesConstIterator
 
typedef CGAL::Box_intersection_d::Box_with_handle_d< double, 3, TrianglesIteratorBox
 
typedef DerivedF::Index Index
 
typedef std::vector< std::pair< Index, CGAL::Object > > ObjectList
 
typedef std::vector< IndexIndexList
 
typedef std::pair< Index, IndexEMK
 
typedef std::vector< IndexEMV
 
typedef std::map< EMK, EMVEdgeMap
 

Public Member Functions

 SelfIntersectMesh (const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const RemeshSelfIntersectionsParam &params, 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, ObjectListoffending
 
std::vector< std::pair< TrianglesIterator, TrianglesIterator > > candidate_triangle_pairs
 
RemeshSelfIntersectionsParam params
 

Detailed Description

template<typename Kernel, typename DerivedV, typename DerivedF, typename DerivedVV, typename DerivedFF, typename DerivedIF, typename DerivedJ, typename DerivedIM>
class igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >

Class for computing the self-intersections of a mesh.

Template Parameters
Kernelis a CGAL kernel like: CGAL::Exact_predicates_inexact_constructions_kernel or CGAL::Exact_predicates_exact_constructions_kernel

Member Typedef Documentation

◆ Point_3

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Point_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Point_3

◆ Segment_3

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Segment_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Segment_3

◆ Triangle_3

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Triangle_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangle_3

◆ Plane_3

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Plane_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Plane_3

◆ Tetrahedron_3

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Tetrahedron_3<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Tetrahedron_3

◆ Point_2

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Point_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Point_2

◆ Segment_2

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Segment_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Segment_2

◆ Triangle_2

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Triangle_2<Kernel> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangle_2

◆ Itag

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef CGAL::Exact_intersections_tag igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Itag

◆ Triangles

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::vector<Triangle_3> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Triangles

◆ TrianglesIterator

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef Triangles::iterator igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::TrianglesIterator

◆ TrianglesConstIterator

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef Triangles::const_iterator igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::TrianglesConstIterator

◆ Box

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
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

◆ Index

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef DerivedF::Index igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::Index

◆ ObjectList

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::vector<std::pair<Index, CGAL::Object> > igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::ObjectList

◆ IndexList

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::vector<Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::IndexList

◆ EMK

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::pair<Index,Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EMK

◆ EMV

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::vector<Index> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EMV

◆ EdgeMap

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
typedef std::map<EMK,EMV> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::EdgeMap

Constructor & Destructor Documentation

◆ SelfIntersectMesh()

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::SelfIntersectMesh ( const Eigen::MatrixBase< DerivedV > &  V,
const Eigen::MatrixBase< DerivedF > &  F,
const RemeshSelfIntersectionsParam params,
Eigen::PlainObjectBase< DerivedVV > &  VV,
Eigen::PlainObjectBase< DerivedFF > &  FF,
Eigen::PlainObjectBase< DerivedIF > &  IF,
Eigen::PlainObjectBase< DerivedJ > &  J,
Eigen::PlainObjectBase< DerivedIM > &  IM 
)
inline

Constructs (VV,FF) a new mesh with self-intersections of (V,F) subdivided.

Parameters
[in]VV by 3 list of vertex positions
[in]FF by 3 list of triangle indices into V
[in]paramsparameters
[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]JF list of indices into FF of birth parents
[out]IM#VV list of indices into V of birth parents
See also
remesh_self_intersections.h

Member Function Documentation

◆ box_intersect()

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
void igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::box_intersect ( const Box a,
const Box b 
)
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

Parameters
[in]abox containing a triangle
[in]bbox containing a triangle

◆ process_intersecting_boxes()

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
void igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::process_intersecting_boxes ( )
inline

Process all of the intersecting boxes.

◆ box_intersect_static()

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
void igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::box_intersect_static ( SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM > *  SIM,
const Box a,
const Box b 
)
inlinestatic

Static function that captures a SelfIntersectMesh instance to pass to cgal.

Parameters
[in]SIMpointer to SelfIntersectMesh instance
[in]abox containing a triangle
[in]bbox containing a triangle

Member Data Documentation

◆ V

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
const Eigen::MatrixBase<DerivedV>& igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::V

◆ F

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
const Eigen::MatrixBase<DerivedF>& igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::F

◆ count

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
Index igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::count

◆ T

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
Triangles igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::T

◆ lIF

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
IndexList igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::lIF

◆ offending

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
std::map<Index,ObjectList> igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::offending

◆ candidate_triangle_pairs

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
std::vector<std::pair<TrianglesIterator, TrianglesIterator> > igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::candidate_triangle_pairs

◆ params

template<typename Kernel , typename DerivedV , typename DerivedF , typename DerivedVV , typename DerivedFF , typename DerivedIF , typename DerivedJ , typename DerivedIM >
RemeshSelfIntersectionsParam igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::params

The documentation for this class was generated from the following file: