Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Thomas Pitiot
CGoGN
Commits
49e1fa24
Commit
49e1fa24
authored
May 26, 2011
by
Pierre Kraemer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add uncutEdge
parent
160ee166
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
10 deletions
+44
-10
include/Algo/ImplicitHierarchicalMesh/subdivision.hpp
include/Algo/ImplicitHierarchicalMesh/subdivision.hpp
+5
-4
include/Topology/generic/embeddedMap2.h
include/Topology/generic/embeddedMap2.h
+5
-0
include/Topology/generic/embeddedMap2.hpp
include/Topology/generic/embeddedMap2.hpp
+14
-0
src/Topology/map/map2.cpp
src/Topology/map/map2.cpp
+20
-6
No files found.
include/Algo/ImplicitHierarchicalMesh/subdivision.hpp
View file @
49e1fa24
...
...
@@ -147,11 +147,12 @@ void coarsenEdge(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& position)
assert
(
map
.
edgeCanBeCoarsened
(
d
)
||
!
"Trying to coarsen an edge that can not be coarsened"
)
;
unsigned
int
cur
=
map
.
getCurrentLevel
()
;
Dart
d2
=
map
.
phi2
(
d
)
;
//
Dart
e
= map.phi2(d) ;
map
.
setCurrentLevel
(
cur
+
1
)
;
unsigned
int
dl
=
map
.
getDartLevel
(
d2
)
;
map
.
setDartLevel
(
map
.
phi1
(
d2
),
dl
)
;
map
.
collapseEdge
(
d2
)
;
// unsigned int dl = map.getDartLevel(e) ;
// map.setDartLevel(map.phi1(e), dl) ;
// map.collapseEdge(e) ;
map
.
uncutEdge
(
d
)
;
map
.
setCurrentLevel
(
cur
)
;
}
...
...
include/Topology/generic/embeddedMap2.h
View file @
49e1fa24
...
...
@@ -55,6 +55,11 @@ public:
*/
virtual
void
cutEdge
(
Dart
d
)
;
/**
* The attributes attached to the edge of d are kept on the resulting edge
*/
virtual
void
uncutEdge
(
Dart
d
)
;
/**
* Check if the edge of d can be collapsed or not based on some topological conditions
* @param d a dart of the edge to test
...
...
include/Topology/generic/embeddedMap2.hpp
View file @
49e1fa24
...
...
@@ -87,6 +87,20 @@ void EmbeddedMap2<MAP2>::cutEdge(Dart d)
}
}
template
<
typename
MAP2
>
void
EmbeddedMap2
<
MAP2
>::
uncutEdge
(
Dart
d
)
{
bool
doSomethg
=
(
d
!=
MAP2
::
phi2
(
d
))
;
MAP2
::
uncutEdge
(
d
)
;
if
(
doSomethg
)
{
if
(
MAP2
::
isOrbitEmbedded
(
EDGE_ORBIT
))
MAP2
::
copyDartEmbedding
(
EDGE_ORBIT
,
MAP2
::
phi2
(
d
),
d
)
;
}
}
template
<
typename
MAP2
>
bool
EmbeddedMap2
<
MAP2
>::
edgeCanCollapse
(
Dart
d
)
{
...
...
src/Topology/map/map2.cpp
View file @
49e1fa24
...
...
@@ -90,6 +90,20 @@ void Map2::cutEdge(Dart d)
void
Map2
::
uncutEdge
(
Dart
d
)
{
assert
(
vertexDegree
(
phi1
(
d
))
==
2
)
;
Dart
ne
=
phi2
(
d
)
;
if
(
ne
==
d
)
collapseEdge
(
d
)
;
else
{
Dart
nd
=
phi1
(
d
)
;
Dart
e
=
phi_1
(
ne
)
;
phi2unsew
(
e
)
;
phi2unsew
(
d
)
;
Map1
::
collapseEdge
(
nd
)
;
Map1
::
collapseEdge
(
ne
)
;
phi2sew
(
d
,
e
)
;
}
}
Dart
Map2
::
collapseEdge
(
Dart
d
,
bool
delDegenerateFaces
)
...
...
@@ -112,11 +126,11 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces)
if
(
f
!=
e
&&
delDegenerateFaces
)
{
Map1
::
collapseEdge
(
e
);
// Collapse edge e
collapseDegeneratedFace
(
f
);
// and collapse its face if degenerated
Map1
::
collapseEdge
(
e
)
;
// Collapse edge e
collapseDegeneratedFace
(
f
)
;
// and collapse its face if degenerated
}
else
Map1
::
collapseEdge
(
e
);
// Just collapse edge e
Map1
::
collapseEdge
(
e
)
;
// Just collapse edge e
}
Dart
f
=
phi1
(
d
)
;
...
...
@@ -134,11 +148,11 @@ Dart Map2::collapseEdge(Dart d, bool delDegenerateFaces)
if
(
f
!=
d
&&
delDegenerateFaces
)
{
Map1
::
collapseEdge
(
d
);
// Collapse edge d
collapseDegeneratedFace
(
f
);
// and collapse its face if degenerated
Map1
::
collapseEdge
(
d
)
;
// Collapse edge d
collapseDegeneratedFace
(
f
)
;
// and collapse its face if degenerated
}
else
Map1
::
collapseEdge
(
d
);
// Just collapse edge d
Map1
::
collapseEdge
(
d
)
;
// Just collapse edge d
return
resV
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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