|
@@ -13,97 +13,95 @@
|
|
#include <Eigen/Core>
|
|
#include <Eigen/Core>
|
|
#include <vector>
|
|
#include <vector>
|
|
|
|
|
|
-namespace igl {
|
|
|
|
|
|
+namespace igl
|
|
|
|
+{
|
|
namespace copyleft
|
|
namespace copyleft
|
|
{
|
|
{
|
|
- namespace cgal {
|
|
|
|
- // Extract connected 3D space partitioned by mesh (V, F).
|
|
|
|
- //
|
|
|
|
- // Inputs:
|
|
|
|
- // V #V by 3 array of vertices.
|
|
|
|
- // F #F by 3 array of faces.
|
|
|
|
- //
|
|
|
|
- // Output:
|
|
|
|
- // cells #F by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
- // cell index on the positive side of face i, and cells(i,1)
|
|
|
|
- // represents cell index of the negqtive side.
|
|
|
|
- template<
|
|
|
|
- typename DerivedV,
|
|
|
|
- typename DerivedF,
|
|
|
|
- typename DerivedC >
|
|
|
|
- IGL_INLINE size_t extract_cells(
|
|
|
|
- const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
- Eigen::PlainObjectBase<DerivedC>& cells);
|
|
|
|
-
|
|
|
|
- // Extract connected 3D space partitioned by mesh (V, F).
|
|
|
|
- //
|
|
|
|
- // Inputs:
|
|
|
|
- // V #V by 3 array of vertices.
|
|
|
|
- // F #F by 3 array of faces.
|
|
|
|
- // P #F list of patch indices.
|
|
|
|
- // E #E by 2 array of vertex indices, one edge per row.
|
|
|
|
- // uE #uE by 2 list of vertex_indices, represents undirected edges.
|
|
|
|
- // uE2E #uE list of lists that maps uE to E. (a one-to-many map)
|
|
|
|
- // EMAP #F*3 list of indices into uE.
|
|
|
|
- //
|
|
|
|
- // Output:
|
|
|
|
- // cells #P by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
- // cell index on the positive side of patch i, and cells(i,1)
|
|
|
|
- // represents cell index of the negqtive side.
|
|
|
|
- template<
|
|
|
|
- typename DerivedV,
|
|
|
|
- typename DerivedF,
|
|
|
|
- typename DerivedP,
|
|
|
|
- typename DerivedE,
|
|
|
|
- typename DeriveduE,
|
|
|
|
- typename uE2EType,
|
|
|
|
- typename DerivedEMAP,
|
|
|
|
- typename DerivedC >
|
|
|
|
- IGL_INLINE size_t extract_cells(
|
|
|
|
- const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedP>& P,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedE>& E,
|
|
|
|
- const Eigen::PlainObjectBase<DeriveduE>& uE,
|
|
|
|
- const std::vector<std::vector<uE2EType> >& uE2E,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedEMAP>& EMAP,
|
|
|
|
- Eigen::PlainObjectBase<DerivedC>& cells);
|
|
|
|
-
|
|
|
|
- // Extract connected 3D space partitioned by mesh (V, F). Each
|
|
|
|
- // connected component of the mesh partitions the ambient space
|
|
|
|
- // separately.
|
|
|
|
- //
|
|
|
|
- // Inputs:
|
|
|
|
- // V #V by 3 array of vertices.
|
|
|
|
- // F #F by 3 array of faces.
|
|
|
|
- // P #F list of patch indices.
|
|
|
|
- // E #E by 2 array of vertex indices, one edge per row.
|
|
|
|
- // uE #uE by 2 list of vertex_indices, represents undirected edges.
|
|
|
|
- // uE2E #uE list of lists that maps uE to E. (a one-to-many map)
|
|
|
|
- // EMAP #F*3 list of indices into uE.
|
|
|
|
- //
|
|
|
|
- // Output:
|
|
|
|
- // cells #P by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
- // cell index on the positive side of patch i, and cells(i,1)
|
|
|
|
- // represents cell index of the negqtive side.
|
|
|
|
- template<
|
|
|
|
- typename DerivedV,
|
|
|
|
- typename DerivedF,
|
|
|
|
- typename DerivedP,
|
|
|
|
- typename DeriveduE,
|
|
|
|
- typename uE2EType,
|
|
|
|
- typename DerivedEMAP,
|
|
|
|
- typename DerivedC >
|
|
|
|
- IGL_INLINE size_t extract_cells_single_component(
|
|
|
|
- const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedP>& P,
|
|
|
|
- const Eigen::PlainObjectBase<DeriveduE>& uE,
|
|
|
|
- const std::vector<std::vector<uE2EType> >& uE2E,
|
|
|
|
- const Eigen::PlainObjectBase<DerivedEMAP>& EMAP,
|
|
|
|
- Eigen::PlainObjectBase<DerivedC>& cells);
|
|
|
|
|
|
+ namespace cgal
|
|
|
|
+ {
|
|
|
|
+ // Extract connected 3D space partitioned by mesh (V, F) could be many
|
|
|
|
+ // connected components.
|
|
|
|
+ //
|
|
|
|
+ // Inputs:
|
|
|
|
+ // V #V by 3 array of vertices.
|
|
|
|
+ // F #F by 3 array of face indices into V.
|
|
|
|
+ // Output:
|
|
|
|
+ // cells #F by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
+ // cell index on the positive side of face i, and cells(i,1)
|
|
|
|
+ // represents cell index of the negqtive side.
|
|
|
|
+ template<
|
|
|
|
+ typename DerivedV,
|
|
|
|
+ typename DerivedF,
|
|
|
|
+ typename DerivedC >
|
|
|
|
+ IGL_INLINE size_t extract_cells(
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
+ Eigen::PlainObjectBase<DerivedC>& cells);
|
|
|
|
|
|
|
|
+ // Extract connected 3D space partitioned by mesh (V, F).
|
|
|
|
+ //
|
|
|
|
+ // Inputs:
|
|
|
|
+ // V #V by 3 array of vertices.
|
|
|
|
+ // F #F by 3 array of faces.
|
|
|
|
+ // P #F list of patch indices.
|
|
|
|
+ // E #E by 2 array of vertex indices, one edge per row.
|
|
|
|
+ // uE #uE by 2 list of vertex_indices, represents undirected edges.
|
|
|
|
+ // uE2E #uE list of lists that maps uE to E. (a one-to-many map)
|
|
|
|
+ // EMAP #F*3 list of indices into uE.
|
|
|
|
+ // Output:
|
|
|
|
+ // cells #P by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
+ // cell index on the positive side of patch i, and cells(i,1)
|
|
|
|
+ // represents cell index of the negqtive side.
|
|
|
|
+ template<
|
|
|
|
+ typename DerivedV,
|
|
|
|
+ typename DerivedF,
|
|
|
|
+ typename DerivedP,
|
|
|
|
+ typename DerivedE,
|
|
|
|
+ typename DeriveduE,
|
|
|
|
+ typename uE2EType,
|
|
|
|
+ typename DerivedEMAP,
|
|
|
|
+ typename DerivedC >
|
|
|
|
+ IGL_INLINE size_t extract_cells(
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedP>& P,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedE>& E,
|
|
|
|
+ const Eigen::PlainObjectBase<DeriveduE>& uE,
|
|
|
|
+ const std::vector<std::vector<uE2EType> >& uE2E,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedEMAP>& EMAP,
|
|
|
|
+ Eigen::PlainObjectBase<DerivedC>& cells);
|
|
|
|
+ // Extract connected 3D space partitioned by mesh (V, F). Each
|
|
|
|
+ // connected component of the mesh partitions the ambient space
|
|
|
|
+ // separately.
|
|
|
|
+ //
|
|
|
|
+ // Inputs:
|
|
|
|
+ // V #V by 3 array of vertices.
|
|
|
|
+ // F #F by 3 array of faces.
|
|
|
|
+ // P #F list of patch indices.
|
|
|
|
+ // E #E by 2 array of vertex indices, one edge per row.
|
|
|
|
+ // uE #uE by 2 list of vertex_indices, represents undirected edges.
|
|
|
|
+ // uE2E #uE list of lists that maps uE to E. (a one-to-many map)
|
|
|
|
+ // EMAP #F*3 list of indices into uE.
|
|
|
|
+ // Output:
|
|
|
|
+ // cells #P by 2 array of cell indices. cells(i,0) represents the
|
|
|
|
+ // cell index on the positive side of patch i, and cells(i,1)
|
|
|
|
+ // represents cell index of the negqtive side.
|
|
|
|
+ template<
|
|
|
|
+ typename DerivedV,
|
|
|
|
+ typename DerivedF,
|
|
|
|
+ typename DerivedP,
|
|
|
|
+ typename DeriveduE,
|
|
|
|
+ typename uE2EType,
|
|
|
|
+ typename DerivedEMAP,
|
|
|
|
+ typename DerivedC >
|
|
|
|
+ IGL_INLINE size_t extract_cells_single_component(
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedV>& V,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedF>& F,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedP>& P,
|
|
|
|
+ const Eigen::PlainObjectBase<DeriveduE>& uE,
|
|
|
|
+ const std::vector<std::vector<uE2EType> >& uE2E,
|
|
|
|
+ const Eigen::PlainObjectBase<DerivedEMAP>& EMAP,
|
|
|
|
+ Eigen::PlainObjectBase<DerivedC>& cells);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|