Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Thomas Pitiot
CGoGN
Commits
d16dca6c
Commit
d16dca6c
authored
Nov 04, 2011
by
Pierre Kraemer
Browse files
no_boundary branch rebased..
parent
a50888b0
Changes
5
Hide whitespace changes
Inline
Side-by-side
include/Topology/generic/dartmarker.h
View file @
d16dca6c
...
...
@@ -32,7 +32,6 @@
namespace
CGoGN
{
/**
* generic class that allows the marking of darts
* \warning no default constructor
...
...
@@ -51,25 +50,22 @@ public:
*/
DartMarkerGen
(
GenericMap
&
map
)
:
m_map
(
map
),
m_thread
(
0
)
{
// m_mark = m_map.m_marksets[DART][m_thread].getNewMark() ;
m_mark
=
m_map
.
getMarkerSet
(
DART
,
m_thread
).
getNewMark
()
;
m_mark
=
m_map
.
getMarkerSet
(
DART
,
m_thread
).
getNewMark
()
;
}
DartMarkerGen
(
GenericMap
&
map
,
unsigned
int
thread
)
:
m_map
(
map
),
m_thread
(
thread
)
{
// m_mark = m_map.m_marksets[DART][m_thread].getNewMark() ;
m_mark
=
m_map
.
getMarkerSet
(
DART
,
m_thread
).
getNewMark
()
;
m_mark
=
m_map
.
getMarkerSet
(
DART
,
m_thread
).
getNewMark
()
;
}
virtual
~
DartMarkerGen
()
{
// m_map.m_marksets[DART][m_thread].releaseMark(m_mark) ;
m_map
.
getMarkerSet
(
DART
,
m_thread
).
releaseMark
(
m_mark
)
;
m_map
.
getMarkerSet
(
DART
,
m_thread
).
releaseMark
(
m_mark
)
;
}
protected:
// protected copy constructor to forbid its usage
DartMarkerGen
(
const
DartMarkerGen
&
dm
)
:
m_map
(
dm
.
m_map
),
m_thread
(
0
),
m_mark
(
NIL
)
DartMarkerGen
(
const
DartMarkerGen
&
dm
)
:
m_map
(
dm
.
m_map
),
m_thread
(
0
),
m_mark
(
0
)
{}
public:
...
...
@@ -78,7 +74,7 @@ public:
*/
virtual
void
mark
(
Dart
d
)
{
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
m_map
.
getMarkVector
(
DART
,
m_thread
)
->
operator
[](
d
.
index
).
setMark
(
m_mark
);
}
...
...
@@ -87,7 +83,7 @@ public:
*/
virtual
void
unmark
(
Dart
d
)
{
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
m_map
.
getMarkVector
(
DART
,
m_thread
)
->
operator
[](
d
.
index
).
unsetMark
(
m_mark
);
}
...
...
@@ -96,7 +92,7 @@ public:
*/
virtual
bool
isMarked
(
Dart
d
)
{
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
assert
(
m_map
.
getMarkerSet
(
DART
,
m_thread
).
testMark
(
m_mark
));
return
m_map
.
getMarkVector
(
DART
,
m_thread
)
->
operator
[](
d
.
index
).
testMark
(
m_mark
);
}
...
...
include/Topology/map/embeddedMap2.h
View file @
d16dca6c
...
...
@@ -65,7 +65,7 @@ public:
/**
* The attributes attached to the edge of d are kept on the resulting edge
*/
virtual
void
uncutEdge
(
Dart
d
)
;
virtual
bool
uncutEdge
(
Dart
d
)
;
/**
* Check if the edge of d can be collapsed or not based on some topological conditions
...
...
include/Topology/map/map2.h
View file @
d16dca6c
...
...
@@ -279,25 +279,6 @@ public:
* @return true if the merge has been executed, false otherwise
*/
virtual
bool
mergeVolumes
(
Dart
d
,
Dart
e
);
//! Close a topological hole (a sequence of connected fixed point of phi2).
/*! \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
);
//TODO a mettre en algo
//! Close the map removing topological holes.
/*! Add faces to the map that close every existing hole.
* These faces are marked.
* \warning The embeddings of vertices are not updated
* @param marker
*/
void
closeMap
(
DartMarker
&
marker
);
//@}
/*! @name Topological Queries
...
...
@@ -420,11 +401,10 @@ public:
* Apply a functor on the all darts in the set of the link from orbit
*/
bool
foreach_dart_of_link
(
Dart
d
,
unsigned
int
orbit
,
FunctorType
&
f
,
unsigned
int
thread
=
0
);
//@}
//@{
//! Close a topological hole (a sequence of connected fixed point of phi2). DO NO USE, only for import algorithm
//! Close a topological hole (a sequence of connected fixed point of phi2). DO NO
T
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.
...
...
@@ -433,17 +413,15 @@ public:
*/
virtual
unsigned
int
closeHole
(
Dart
d
);
//! Close the map removing topological holes: DO NO USE, only for import algorithm
//! Close the map removing topological holes: DO NOT 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
* sew oriented face, DO NO
T
USE, only for import algorithm
*/
void
sewOrientedFaces
(
Dart
d
,
Dart
e
);
//@}
...
...
src/Topology/map/embeddedMap2.cpp
View file @
d16dca6c
...
...
@@ -105,17 +105,15 @@ void EmbeddedMap2::cutEdge(Dart d)
}
}
void
EmbeddedMap2
::
uncutEdge
(
Dart
d
)
bool
EmbeddedMap2
::
uncutEdge
(
Dart
d
)
{
bool
doSomethg
=
(
d
!=
phi2
(
d
))
;
Map2
::
uncutEdge
(
d
)
;
if
(
doSomethg
)
if
(
Map2
::
uncutEdge
(
d
))
{
if
(
isOrbitEmbedded
(
EDGE
))
copyDartEmbedding
(
EDGE
,
phi2
(
d
),
d
)
;
return
true
;
}
return
false
;
}
bool
EmbeddedMap2
::
edgeCanCollapse
(
Dart
d
)
...
...
src/Topology/map/map2.cpp
View file @
d16dca6c
...
...
@@ -77,7 +77,7 @@ void Map2::mergeFacewithBoundary(Dart d)
}
Dart
g
=
phi2
(
f
);
if
(
isBoundaryMarked
(
g
))
// check if connex
t
ion by a face
if
(
isBoundaryMarked
(
g
))
// check if connexion by a face
{
storeForLinkFace
.
push_back
(
f
);
storeForLinkFace
.
push_back
(
g
);
...
...
@@ -88,15 +88,19 @@ void Map2::mergeFacewithBoundary(Dart d)
// merge by vertices
while
(
!
storeForLinkVertex
.
empty
())
{
Dart
a
=
storeForLinkVertex
.
pop_back
();
Dart
b
=
storeForLinkVertex
.
pop_back
();
Dart
a
=
storeForLinkVertex
.
back
()
;
storeForLinkVertex
.
pop_back
()
;
Dart
b
=
storeForLinkVertex
.
back
()
;
storeForLinkVertex
.
pop_back
()
;
phi1sew
(
a
,
b
);
}
//merge by faces
while
(
!
storeForLinkFace
.
empty
())
{
Dart
a
=
storeForLinkFace
.
pop_back
();
Dart
b
=
storeForLinkFace
.
pop_back
();
Dart
a
=
storeForLinkVertex
.
back
()
;
storeForLinkVertex
.
pop_back
()
;
Dart
b
=
storeForLinkVertex
.
back
()
;
storeForLinkVertex
.
pop_back
()
;
mergeBoundaryFaces
(
a
,
b
);
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment