Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CGoGN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Hurstel
CGoGN
Commits
e5767ab2
Commit
e5767ab2
authored
Jan 28, 2013
by
Lionel Untereiner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add a function in map3
parent
b9d7e3e2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
125 additions
and
4 deletions
+125
-4
Apps/Examples/volumeExplorer.cpp
Apps/Examples/volumeExplorer.cpp
+1
-1
include/Topology/map/map3.h
include/Topology/map/map3.h
+9
-0
src/Topology/map/map3.cpp
src/Topology/map/map3.cpp
+115
-3
No files found.
Apps/Examples/volumeExplorer.cpp
View file @
e5767ab2
...
...
@@ -200,7 +200,7 @@ void MyQT::cb_initGL()
// create the renders
m_topo_render
=
new
Algo
::
Render
::
GL2
::
Topo3Render
();
m_explode_render
=
new
Algo
::
Render
::
GL2
::
ExplodeVolumeRender
(
true
,
true
,
tru
e
);
m_explode_render
=
new
Algo
::
Render
::
GL2
::
ExplodeVolumeRender
(
true
,
true
,
fals
e
);
SelectorDartNoBoundary
<
PFP
::
MAP
>
nb
(
myMap
);
m_topo_render
->
updateData
<
PFP
>
(
myMap
,
position
,
0.8
f
,
0.8
f
,
0.8
f
,
nb
);
...
...
include/Topology/map/map3.h
View file @
e5767ab2
...
...
@@ -470,6 +470,15 @@ public:
*/
void
computeDual
();
//TODO crade a virer (espece d'extrud)
// Prend un brin d'une 2-carte
// - stocke 1 brin par face
// - decoud chaque face
// - triangule chaque face
// - ferme par phi3 chaque volume
// - recoud le tout
Dart
explodBorderTopo
(
Dart
d
);
void
computeDualTest
();
//@}
};
...
...
src/Topology/map/map3.cpp
View file @
e5767ab2
...
...
@@ -1296,11 +1296,11 @@ void Map3::computeDual()
swapEmbeddingContainers
(
VERTEX
,
VOLUME
)
;
unsigned
int
count
=
0
;
//
unsigned int count = 0;
std
::
vector
<
Dart
>
vbound
;
//
std::vector<Dart> vbound;
//std::cout << "nb faces : " << closeMap() << std::endl;
//
//std::cout << "nb faces : " << closeMap() << std::endl;
// for(Dart d = begin(); d != end(); next(d))
// {
...
...
@@ -1437,6 +1437,118 @@ void Map3::computeDual()
//std::cout << "Map closed (" << closeMap() <<" boundary faces)" << std::endl;
}
Dart
Map3
::
explodBorderTopo
(
Dart
d
)
{
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>
ve
;
ve
.
reserve
(
1024
);
//stocke un brin par face du bord
DartMarker
me
(
*
this
);
for
(
Dart
dit
=
begin
()
;
dit
!=
end
()
;
next
(
dit
))
{
if
(
isBoundaryMarked3
(
dit
)
&&
!
me
.
isMarked
(
dit
))
{
ve
.
push_back
(
std
::
make_pair
(
dit
,
phi2
(
dit
)));
me
.
markOrbit
<
EDGE
>
(
dit
);
}
}
//decoud chaque face
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
it
=
ve
.
begin
()
;
it
!=
ve
.
end
()
;
++
it
)
{
Map2
::
unsewFaces
((
*
it
).
first
,
false
);
}
//triangule chaque face
DartMarker
mf
(
*
this
);
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
it
=
ve
.
begin
()
;
it
!=
ve
.
end
()
;
++
it
)
{
Dart
first
=
(
*
it
).
first
;
Dart
second
=
(
*
it
).
second
;
if
(
!
mf
.
isMarked
(
first
))
{
mf
.
markOrbit
<
FACE
>
(
first
);
unsigned
int
degf
=
Map2
::
faceDegree
(
first
);
Dart
dnf
=
Map2
::
newFace
(
degf
,
false
);
Dart
dnftemp
=
dnf
;
Dart
dit
=
first
;
do
{
Map2
::
sewFaces
(
dit
,
dnftemp
,
false
);
dit
=
phi1
(
dit
);
dnftemp
=
phi_1
(
dnftemp
);
}
while
(
dnftemp
!=
dnf
);
Dart
db
=
dnf
;
Dart
d1
=
phi1
(
db
);
Dart
dprev
=
phi_1
(
db
);
Map2
::
splitFace
(
db
,
d1
)
;
Map2
::
cutEdge
(
phi_1
(
db
))
;
Dart
x
=
phi2
(
phi_1
(
db
))
;
Dart
dd
=
phi1
(
phi1
(
phi1
(
x
)));
while
(
dd
!=
x
)
{
Dart
next
=
phi1
(
dd
)
;
Dart
prev
=
phi_1
(
dd
);
Map2
::
splitFace
(
dd
,
phi1
(
x
))
;
dd
=
next
;
}
}
if
(
!
mf
.
isMarked
(
second
))
{
mf
.
markOrbit
<
FACE
>
(
second
);
unsigned
int
degf
=
Map2
::
faceDegree
(
second
);
Dart
dnf
=
Map2
::
newFace
(
degf
,
false
);
Dart
dnftemp
=
dnf
;
Dart
dit
=
second
;
do
{
Map2
::
sewFaces
(
dit
,
dnftemp
,
false
);
dit
=
phi1
(
dit
);
dnftemp
=
phi_1
(
dnftemp
);
}
while
(
dnftemp
!=
dnf
);
Dart
db
=
dnf
;
Dart
d1
=
phi1
(
db
);
Dart
dprev
=
phi_1
(
db
);
Map2
::
splitFace
(
db
,
d1
)
;
Map2
::
cutEdge
(
phi_1
(
db
))
;
Dart
x
=
phi2
(
phi_1
(
db
))
;
Dart
dd
=
phi1
(
phi1
(
phi1
(
x
)));
while
(
dd
!=
x
)
{
Dart
next
=
phi1
(
dd
)
;
Dart
prev
=
phi_1
(
dd
);
Map2
::
splitFace
(
dd
,
phi1
(
x
))
;
dd
=
next
;
}
}
}
// //close de chaque nouveau volume
// for(std::vector<std::pair<Dart, Dart> >::iterator it = ve.begin() ; it != ve.end() ; ++it)
// {
// closeHole(phi2((*it).first));
// }
//close de chaque nouveau volume
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
it
=
ve
.
begin
()
;
it
!=
ve
.
end
()
;
++
it
)
{
sewVolumes
(
phi2
((
*
it
).
first
),
phi2
((
*
it
).
second
),
false
);
}
return
phi_1
(
phi2
(
ve
.
front
().
first
));
}
void
Map3
::
computeDualTest
()
{
// unsigned int count = 0;
...
...
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