Commit e7fbce7f authored by Pierre Kraemer's avatar Pierre Kraemer
Browse files

Merge branch 'no_boundary' of cgogn:CGoGN into no_boundary

Conflicts:
	include/Topology/generic/dartmarker.h
	include/Topology/map/map2.h
	src/Topology/map/map2.cpp
parents d16dca6c 69e504c4
...@@ -317,7 +317,23 @@ public: ...@@ -317,7 +317,23 @@ public:
/** /**
* tell if the vertex of d is on the boundary of the map * tell if the vertex of d is on the boundary of the map
*/ */
bool isBoundaryVertex(Dart d) ; bool isBoundaryVertex(Dart d) ; // OK boundary
/**
* find the dart of vertex that belong to the boundary
*/
Dart findBoundaryVertex(Dart d);
/**
* tell if the edge of d is on the boundary of the map
*/
bool isBoundaryEdge(Dart d) ; // OK boundary
/**
* tell if the face of d is on the boundary of the map
*/
bool isBoundaryFace(Dart d) ;
/** /**
* find the dart of vertex that belong to the boundary * find the dart of vertex that belong to the boundary
...@@ -340,7 +356,7 @@ public: ...@@ -340,7 +356,7 @@ public:
* boudary dart is reached. * boudary dart is reached.
* @param d a boundary dart * @param d a boundary dart
*/ */
Dart nextOnBoundary(Dart d) ; Dart nextOnBoundary(Dart d); // OK boundary
// TODO a mettre en algo // TODO a mettre en algo
/** /**
...@@ -425,6 +441,31 @@ public: ...@@ -425,6 +441,31 @@ public:
*/ */
void sewOrientedFaces(Dart d, Dart e); void sewOrientedFaces(Dart d, Dart e);
//@} //@}
//@{
//! Close a topological hole (a sequence of connected fixed point of phi2). DO NO USE, only for import algorithm
/*! \pre dart d MUST be fixed point of phi2 relation
* Add a face to the map that closes the hole.
* The darts of this face are marked with holeMarker.
* @param d a dart of the hole (with phi2(d)==d)
* @return the degree of the created face
*/
virtual unsigned int closeHole(Dart d);
//! Close the map removing topological holes: DO NO USE, only for import algorithm
/*! Add faces to the map that close every existing hole.
* These faces are marked.
* \warning The embeddings of vertices are not updated
*/
void closeMap();
// void closeMap(DartMarker& marker);
/**
* sew oriented face, DO NO USE, only for import algorithm
*/
void sewOrientedFaces(Dart d, Dart e);
//@}
}; };
} // namespace CGoGN } // namespace CGoGN
......
...@@ -230,6 +230,7 @@ bool Map2::uncutEdge(Dart d) ...@@ -230,6 +230,7 @@ bool Map2::uncutEdge(Dart d)
return false ; return false ;
} }
Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces) Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces)
{ {
// Dart resV ; // Dart resV ;
...@@ -289,7 +290,7 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces) ...@@ -289,7 +290,7 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces)
Dart h = alpha1(e); Dart h = alpha1(e);
if (h != e) if (h != e)
resV=h; resV = h;
if (f != e && delDegenerateFaces) if (f != e && delDegenerateFaces)
{ {
...@@ -304,7 +305,7 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces) ...@@ -304,7 +305,7 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces)
{ {
h = alpha1(d); h = alpha1(d);
if (h != d) if (h != d)
resV=h; resV = h;
} }
if (f != d && delDegenerateFaces) if (f != d && delDegenerateFaces)
...@@ -390,19 +391,19 @@ void Map2::unsewFaces(Dart d) ...@@ -390,19 +391,19 @@ void Map2::unsewFaces(Dart d)
if (isBoundaryVertex(d)) if (isBoundaryVertex(d))
{ {
Dart f = findBoundaryVertex(d); Dart f = findBoundaryVertex(d);
phi1sew(e,phi_1(f)); phi1sew(e, phi_1(f));
} }
if (isBoundaryVertex(dd)) if (isBoundaryVertex(dd))
{ {
Dart f = findBoundaryVertex(dd); Dart f = findBoundaryVertex(dd);
phi1sew(phi_1(e),phi_1(f)); phi1sew(phi_1(e), phi_1(f));
} }
phi2unsew(d); phi2unsew(d);
// sew faces to the boundary // sew faces to the boundary
phi2sew(d,e); phi2sew(d, e);
phi2sew(dd,phi1(e)); phi2sew(dd, phi1(e));
} }
bool Map2::collapseDegeneratedFace(Dart d) bool Map2::collapseDegeneratedFace(Dart d)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment