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
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
CGoGN
CGoGN
Commits
0996dc3e
Commit
0996dc3e
authored
Nov 08, 2011
by
Thomas
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of cgogn.u-strasbg.fr:~untereiner/CGoGN
parents
7f4059ea
64bd8a46
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
363 additions
and
366 deletions
+363
-366
Apps/Examples/Debug/CMakeLists.txt
Apps/Examples/Debug/CMakeLists.txt
+1
-1
Apps/Examples/Release/CMakeLists.txt
Apps/Examples/Release/CMakeLists.txt
+1
-1
Apps/Examples/clipping.cpp
Apps/Examples/clipping.cpp
+1
-4
Apps/Tuto/CMakeLists.txt
Apps/Tuto/CMakeLists.txt
+1
-1
build/CMakeLists.txt
build/CMakeLists.txt
+1
-1
build/Debug/CMakeLists.txt
build/Debug/CMakeLists.txt
+1
-1
build/Release/CMakeLists.txt
build/Release/CMakeLists.txt
+1
-1
include/Algo/ImplicitHierarchicalMesh/ihm.h
include/Algo/ImplicitHierarchicalMesh/ihm.h
+2
-3
include/Algo/ImplicitHierarchicalMesh/ihm.hpp
include/Algo/ImplicitHierarchicalMesh/ihm.hpp
+1
-1
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
+348
-348
src/Topology/map/map3.cpp
src/Topology/map/map3.cpp
+3
-2
src/Utils/qtgl.cpp
src/Utils/qtgl.cpp
+2
-2
No files found.
Apps/Examples/Debug/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
examplesD
)
project
(
examplesD
)
...
...
Apps/Examples/Release/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
examples
)
project
(
examples
)
...
...
Apps/Examples/clipping.cpp
View file @
0996dc3e
...
@@ -186,10 +186,7 @@ void Clipping::slot_spinBox_GridResolution(int i)
...
@@ -186,10 +186,7 @@ void Clipping::slot_spinBox_GridResolution(int i)
void
Clipping
::
slot_pushButton_changePlanesColor
()
void
Clipping
::
slot_pushButton_changePlanesColor
()
{
{
QColor
NewColor
;
QColor
NewColor
=
QColorDialog
::
getColor
();
QColorDialog
ColDialog
;
NewColor
=
ColDialog
.
getColor
();
int
r
,
g
,
b
;
int
r
,
g
,
b
;
NewColor
.
getRgb
(
&
r
,
&
g
,
&
b
);
NewColor
.
getRgb
(
&
r
,
&
g
,
&
b
);
...
...
Apps/Tuto/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
Tutos
)
project
(
Tutos
)
...
...
build/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
CGoGN
)
project
(
CGoGN
)
...
...
build/Debug/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
CGoGNDebug
)
project
(
CGoGNDebug
)
...
...
build/Release/CMakeLists.txt
View file @
0996dc3e
cmake_minimum_required
(
VERSION 2.
6
)
cmake_minimum_required
(
VERSION 2.
8
)
project
(
CGoGNRelease
)
project
(
CGoGNRelease
)
...
...
include/Algo/ImplicitHierarchicalMesh/ihm.h
View file @
0996dc3e
...
@@ -25,8 +25,7 @@
...
@@ -25,8 +25,7 @@
#ifndef __IMPLICIT_HIERARCHICAL_MAP__
#ifndef __IMPLICIT_HIERARCHICAL_MAP__
#define __IMPLICIT_HIERARCHICAL_MAP__
#define __IMPLICIT_HIERARCHICAL_MAP__
#include "Topology/map/map2.h"
#include "Topology/map/embeddedMap2.h"
#include "Topology/generic/embeddedMap2.h"
namespace
CGoGN
namespace
CGoGN
{
{
...
@@ -39,7 +38,7 @@ namespace IHM
...
@@ -39,7 +38,7 @@ namespace IHM
template
<
typename
T
>
class
AttributeHandler_IHM
;
template
<
typename
T
>
class
AttributeHandler_IHM
;
class
ImplicitHierarchicalMap
:
public
EmbeddedMap2
<
Map2
>
class
ImplicitHierarchicalMap
:
public
EmbeddedMap2
{
{
template
<
typename
T
>
friend
class
AttributeHandler_IHM
;
template
<
typename
T
>
friend
class
AttributeHandler_IHM
;
...
...
include/Algo/ImplicitHierarchicalMesh/ihm.hpp
View file @
0996dc3e
...
@@ -253,7 +253,7 @@ inline bool ImplicitHierarchicalMap::foreach_dart_of_cc(Dart d, FunctorType& f,
...
@@ -253,7 +253,7 @@ inline bool ImplicitHierarchicalMap::foreach_dart_of_cc(Dart d, FunctorType& f,
inline
void
ImplicitHierarchicalMap
::
splitFace
(
Dart
d
,
Dart
e
)
inline
void
ImplicitHierarchicalMap
::
splitFace
(
Dart
d
,
Dart
e
)
{
{
EmbeddedMap2
<
Map2
>
::
splitFace
(
d
,
e
)
;
EmbeddedMap2
::
splitFace
(
d
,
e
)
;
if
(
isOrbitEmbedded
(
FACE
))
if
(
isOrbitEmbedded
(
FACE
))
{
{
unsigned
int
cur
=
m_curLevel
;
unsigned
int
cur
=
m_curLevel
;
...
...
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
View file @
0996dc3e
...
@@ -297,354 +297,354 @@ Dart subdivideVolumeGen(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& pos
...
@@ -297,354 +297,354 @@ Dart subdivideVolumeGen(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& pos
std
::
vector
<
Dart
>
newEdges
;
//save darts from inner edges
std
::
vector
<
Dart
>
newEdges
;
//save darts from inner edges
newEdges
.
reserve
(
50
);
newEdges
.
reserve
(
50
);
//
//Second step : deconnect each corner, close each hole, subdivide each new face into 3
//Second step : deconnect each corner, close each hole, subdivide each new face into 3
//
for (std::vector<Dart>::iterator edge = oldEdges.begin(); edge != oldEdges.end(); ++edge)
for
(
std
::
vector
<
Dart
>::
iterator
edge
=
oldEdges
.
begin
();
edge
!=
oldEdges
.
end
();
++
edge
)
//
{
{
//
//std::vector<Dart>::iterator edge = oldEdges.begin();
//std::vector<Dart>::iterator edge = oldEdges.begin();
//
Dart e = *edge;
Dart
e
=
*
edge
;
//
//
Dart f1 = map.phi1(*edge);
Dart
f1
=
map
.
phi1
(
*
edge
);
//
//Dart f2 = map.phi2(f1);
//Dart f2 = map.phi2(f1);
//
//
do
do
//
{
{
//
if(map.phi1(map.phi1(map.phi1(e))) != e)
if
(
map
.
phi1
(
map
.
phi1
(
map
.
phi1
(
e
)))
!=
e
)
//
{
{
//
map.unsewFaces(map.phi1(map.phi1(e))); //remplacer par une boucle qui découd toute la face et non juste une face carre (jusqu'a phi_1(e))
map
.
unsewFaces
(
map
.
phi1
(
map
.
phi1
(
e
)));
//remplacer par une boucle qui découd toute la face et non juste une face carre (jusqu'a phi_1(e))
//
}
}
//
//
map.unsewFaces(map.phi1(e));
map
.
unsewFaces
(
map
.
phi1
(
e
));
//
//
//
e = map.phi2(map.phi_1(e));
e
=
map
.
phi2
(
map
.
phi_1
(
e
));
//
}
}
//
while(e != *edge);
while
(
e
!=
*
edge
);
//
//
map.closeHole(f1);
map
.
closeHole
(
f1
);
//
//
//degree du sommet exterieur
//degree du sommet exterieur
//
unsigned int cornerDegree = map.Map2::vertexDegree(*edge);
unsigned
int
cornerDegree
=
map
.
Map2
::
vertexDegree
(
*
edge
);
//
//
//tourner autour du sommet pour connaitre le brin d'un sommet de valence < cornerDegree
//tourner autour du sommet pour connaitre le brin d'un sommet de valence < cornerDegree
//
bool found = false;
bool
found
=
false
;
//
Dart stop = e;
Dart
stop
=
e
;
//
do
do
//
{
{
//
//
if(map.Map2::vertexDegree(map.phi2(map.phi1(e))) < cornerDegree)
if
(
map
.
Map2
::
vertexDegree
(
map
.
phi2
(
map
.
phi1
(
e
)))
<
cornerDegree
)
//
{
{
//
stop = map.phi2(map.phi1(e));
stop
=
map
.
phi2
(
map
.
phi1
(
e
));
//
found = true;
found
=
true
;
//
}
}
//
//
e = map.phi2(map.phi_1(e));
e
=
map
.
phi2
(
map
.
phi_1
(
e
));
//
}
}
//
while(!found && e != *edge);
while
(
!
found
&&
e
!=
*
edge
);
//
//
//si il existe un sommet de degre inferieur au degree du coin
//si il existe un sommet de degre inferieur au degree du coin
//
if(found)
if
(
found
)
//
{
{
//
//chercher le brin de faible degree suivant
//chercher le brin de faible degree suivant
//
bool found2 = false;
bool
found2
=
false
;
//
Dart dd = map.phi1(stop);
Dart
dd
=
map
.
phi1
(
stop
);
//
//
do
do
//
{
{
//
if(map.Map2::vertexDegree(dd) < cornerDegree)
if
(
map
.
Map2
::
vertexDegree
(
dd
)
<
cornerDegree
)
//
found2 = true;
found2
=
true
;
//
else
else
//
dd = map.phi1(dd);
dd
=
map
.
phi1
(
dd
);
//
}
}
//
while(!found2);
while
(
!
found2
);
//
//
//cas de la pyramide
//cas de la pyramide
//
if(dd == stop)
if
(
dd
==
stop
)
//
{
{
//
//std::cout << "pyramide" << std::endl;
//std::cout << "pyramide" << std::endl;
//
map.splitFace(dd, map.phi1(map.phi1(dd)));
map
.
splitFace
(
dd
,
map
.
phi1
(
map
.
phi1
(
dd
)));
//
}
}
//
else
else
//
{
{
//
map.splitFace(dd, stop);
map
.
splitFace
(
dd
,
stop
);
//
//
//calcul de la taille des faces de chaque cote de stop
//calcul de la taille des faces de chaque cote de stop
//
if(!( (map.Map2::faceDegree(map.phi_1(stop)) == 3 && map.Map2::faceDegree(map.phi2(map.phi_1(stop))) == 4) ||
if
(
!
(
(
map
.
Map2
::
faceDegree
(
map
.
phi_1
(
stop
))
==
3
&&
map
.
Map2
::
faceDegree
(
map
.
phi2
(
map
.
phi_1
(
stop
)))
==
4
)
||
//
(map.Map2::faceDegree(map.phi_1(stop)) == 4 && map.Map2::faceDegree(map.phi2(map.phi_1(stop))) == 3) ))
(
map
.
Map2
::
faceDegree
(
map
.
phi_1
(
stop
))
==
4
&&
map
.
Map2
::
faceDegree
(
map
.
phi2
(
map
.
phi_1
(
stop
)))
==
3
)
))
//
{
{
//
//std::cout << "octaedre ou hexaedre" << std::endl;
//std::cout << "octaedre ou hexaedre" << std::endl;
//
//
Dart ne = map.phi_1(stop) ;
Dart
ne
=
map
.
phi_1
(
stop
)
;
//
map.cutEdge(ne);
map
.
cutEdge
(
ne
);
//
position[map.phi1(ne)] = volCenter;
position
[
map
.
phi1
(
ne
)]
=
volCenter
;
//
stop = map.phi2(map.phi1(ne));
stop
=
map
.
phi2
(
map
.
phi1
(
ne
));
//
//
bool finished = false;
bool
finished
=
false
;
//
Dart it = map.phi2(ne);
Dart
it
=
map
.
phi2
(
ne
);
//
//
do
do
//
{
{
//
//chercher le brin de faible degree suivant
//chercher le brin de faible degree suivant
//
bool found2 = false;
bool
found2
=
false
;
//
Dart dd = map.phi1(it);
Dart
dd
=
map
.
phi1
(
it
);
//
//
do
do
//
{
{
//
if(dd == stop)
if
(
dd
==
stop
)
//
finished = true;
finished
=
true
;
//
else if(map.Map2::vertexDegree(dd) < cornerDegree)
else
if
(
map
.
Map2
::
vertexDegree
(
dd
)
<
cornerDegree
)
//
found2 = true;
found2
=
true
;
//
else
else
//
dd = map.phi1(dd);
dd
=
map
.
phi1
(
dd
);
//
}
}
//
while(!found2 & !finished);
while
(
!
found2
&
!
finished
);
//
//
if(found2)
if
(
found2
)
//
{
{
//
map.splitFace(it,dd);
map
.
splitFace
(
it
,
dd
);
//
}
}
//
//
it = map.phi_1(dd);
it
=
map
.
phi_1
(
dd
);
//
//
if(it == stop)
if
(
it
==
stop
)
//
finished = true;
finished
=
true
;
//
//
}
}
//
while(!finished);
while
(
!
finished
);
//
//
}
}
//
else
else
//
{
{
//
//std::cout << "prisme" << std::endl;
//std::cout << "prisme" << std::endl;
//
//tester si besoin de fermer f2 (par exemple pas besoin pour hexa... mais pour tet, octa, prisme oui)
//tester si besoin de fermer f2 (par exemple pas besoin pour hexa... mais pour tet, octa, prisme oui)
//
//map.closeHole(f2);
//map.closeHole(f2);
//
}
}
//
//
}
}
//
//
}
}
//
//sinon cas du tetraedre
//sinon cas du tetraedre
//
else
else
//
{
{
//
//std::cout << "tetraedre" << std::endl;
//std::cout << "tetraedre" << std::endl;
//
//tester si besoin de fermer f2 (par exemple pas besoin pour hexa... mais pour tet, octa, prisme oui)
//tester si besoin de fermer f2 (par exemple pas besoin pour hexa... mais pour tet, octa, prisme oui)
//
//map.closeHole(f2);
//map.closeHole(f2);
//
}
}
//
//
}
}
//
//
//std::cout << "1ere etape finished" << std::endl;
//std::cout << "1ere etape finished" << std::endl;
//
//
CellMarker mtf(map, FACE);
CellMarker
mtf
(
map
,
FACE
);
//
//
//Etape 2
//Etape 2
//
for (std::vector<std::pair<Dart,Dart> >::iterator edges = subdividedfacesT.begin(); edges != subdividedfacesT.end(); ++edges)
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
edges
=
subdividedfacesT
.
begin
();
edges
!=
subdividedfacesT
.
end
();
++
edges
)
//
{
{
//
Dart f1 = (*edges).first;
Dart
f1
=
(
*
edges
).
first
;
//
Dart f2 = (*edges).second;
Dart
f2
=
(
*
edges
).
second
;
//
//
//
Fonction isTetrahedron ??
//Fonction isTetrahedron ??
//
//
//if(Algo::Modelisation::Tetrahedron::isTetrahedron<PFP>(map,f2))
// //if(Algo::Modelisation::Tetrahedron::isTetrahedron<PFP>(map,f2))
//
if( (map.Map2::faceDegree(f2) == 3 && map.Map2::faceDegree(map.phi2(f2)) == 3 &&
if
(
(
map
.
Map2
::
faceDegree
(
f2
)
==
3
&&
map
.
Map2
::
faceDegree
(
map
.
phi2
(
f2
))
==
3
&&
//
map.Map2::faceDegree(map.phi2(map.phi_1(f2))) == 3) && map.Map2::vertexDegree(f2) == 3)
map
.
Map2
::
faceDegree
(
map
.
phi2
(
map
.
phi_1
(
f2
)))
==
3
)
&&
map
.
Map2
::
vertexDegree
(
f2
)
==
3
)
//
{ //cas du tetrahedre
{
//cas du tetrahedre
//
//
//std::cout << "ajout d'une face" << std::endl;
//std::cout << "ajout d'une face" << std::endl;
//
//
if(map.phi3(map.phi2(f2)) == map.phi2(f2))
if
(
map
.
phi3
(
map
.
phi2
(
f2
))
==
map
.
phi2
(
f2
))
//
{
{
//
Dart nf = map.newFace(3);
Dart
nf
=
map
.
newFace
(
3
);
//
map.sewVolumes(map.phi2(f2),nf);
map
.
sewVolumes
(
map
.
phi2
(
f2
),
nf
);
//
}
}
//
//
if(map.phi2(map.phi3(map.phi2(f2))) == map.phi3(map.phi2(f2)))
if
(
map
.
phi2
(
map
.
phi3
(
map
.
phi2
(
f2
)))
==
map
.
phi3
(
map
.
phi2
(
f2
)))
//
{
{
//
map.sewFaces(map.phi3(map.phi2(f2)), f1);
map
.
sewFaces
(
map
.
phi3
(
map
.
phi2
(
f2
)),
f1
);
//
}
}
//
}
}
//
else
else
//
{
{
//
if(!mtf.isMarked(f1))
if
(
!
mtf
.
isMarked
(
f1
))
//
{
{
//
mtf.mark(f1);
mtf
.
mark
(
f1
);
//
//
map.closeHole(f1);
map
.
closeHole
(
f1
);
//
//
if(map.Map2::faceDegree(map.phi2(f2)) == 3)
if
(
map
.
Map2
::
faceDegree
(
map
.
phi2
(
f2
))
==
3
)
//
{
{
//
//std::cout << "ajout d'un tetraedre" << std::endl;
//std::cout << "ajout d'un tetraedre" << std::endl;
//
Dart x = Algo::Modelisation::trianguleFace<PFP>(map, map.phi2(f1));
Dart
x
=
Algo
::
Modelisation
::
trianguleFace
<
PFP
>
(
map
,
map
.
phi2
(
f1
));
//
position[x] = volCenter;
position
[
x
]
=
volCenter
;
//
}
}
//
else
else
//
{
{
//
//std::cout << "ajout d'un prisme" << std::endl;
//std::cout << "ajout d'un prisme" << std::endl;
//
//Dart x = Algo::Modelisation::extrudeFace<PFP>(map,position,map.phi2(f1),5.0);
//Dart x = Algo::Modelisation::extrudeFace<PFP>(map,position,map.phi2(f1),5.0);
//
Dart c = Algo::Modelisation::trianguleFace<PFP>(map, map.phi2(f1));
Dart
c
=
Algo
::
Modelisation
::
trianguleFace
<
PFP
>
(
map
,
map
.
phi2
(
f1
));
//
//
Dart cc = c;
Dart
cc
=
c
;
//
// cut edges
// cut edges
//
do
do
//
{
{
//
//
typename PFP::VEC3 p1 = position[cc] ;
typename
PFP
::
VEC3
p1
=
position
[
cc
]
;
//
typename PFP::VEC3 p2 = position[map.phi1(cc)] ;
typename
PFP
::
VEC3
p2
=
position
[
map
.
phi1
(
cc
)]
;
//
//
map.cutEdge(cc);
map
.
cutEdge
(
cc
);
//
//
position[map.phi1(cc)] = (p1 + p2) * typename PFP::REAL(0.5) ;
position
[
map
.
phi1
(
cc
)]
=
(
p1
+
p2
)
*
typename
PFP
::
REAL
(
0.5
)
;
//
//
cc = map.phi2(map.phi_1(cc));
cc
=
map
.
phi2
(
map
.
phi_1
(
cc
));
//
}while (cc != c);
}
while
(
cc
!=
c
);
//
//
// cut faces
// cut faces
//
do
do
//
{
{
//
Dart d1 = map.phi1(cc);
Dart
d1
=
map
.
phi1
(
cc
);
//
Dart d2 = map.phi_1(cc);
Dart
d2
=
map
.
phi_1
(
cc
);
//
map.splitFace(d1,d2);
map
.
splitFace
(
d1
,
d2
);
//
cc = map.phi2(map.phi_1(cc));//map.Map2::alpha1(cc);
cc
=
map
.
phi2
(
map
.
phi_1
(
cc
));
//map.Map2::alpha1(cc);
//
}while (cc != c);
}
while
(
cc
!=
c
);
//
//
//merge central faces by removing edges
//merge central faces by removing edges
//
bool notFinished=true;
bool
notFinished
=
true
;
//
do
do
//
{
{
//
Dart d1 = map.Map2::alpha1(cc);
Dart
d1
=
map
.
Map2
::
alpha1
(
cc
);
//
if (d1 == cc) // last edge is pending edge inside of face
if
(
d1
==
cc
)
// last edge is pending edge inside of face
//
notFinished = false;
notFinished
=
false
;
//
map.deleteFace(cc);
map
.
deleteFace
(
cc
);
//
cc = d1;
cc
=
d1
;
//
} while (notFinished);
}
while
(
notFinished
);
//
//
//
map.closeHole(map.phi1(map.phi1(map.phi2(f1))));
map
.
closeHole
(
map
.
phi1
(
map
.
phi1
(
map
.
phi2
(
f1
))));
//
//
}
}
//
}
}
//
}
}
//
//
}
}
//
//
//std::cout << "2e etape finished" << std::endl;
//std::cout << "2e etape finished" << std::endl;
//
//
//
{
{
//
//Third step : 3-sew internal faces
//Third step : 3-sew internal faces
//
for (std::vector<std::pair<Dart,Dart> >::iterator it = subdividedfacesT.begin(); it != subdividedfacesT.end(); ++it)
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
it
=
subdividedfacesT
.
begin
();
it
!=
subdividedfacesT
.
end
();
++
it
)
//
{
{
//
Dart f1 = (*it).first;
Dart
f1
=
(
*
it
).
first
;
//
Dart f2 = (*it).second;
Dart
f2
=
(
*
it
).
second
;
//
//
//
//
if(map.phi3(map.phi2(f1)) == map.phi2(f1) && map.phi3(map.phi2(f2)) == map.phi2(f2))
if
(
map
.
phi3
(
map
.
phi2
(
f1
))
==
map
.
phi2
(
f1
)
&&
map
.
phi3
(
map
.
phi2
(
f2
))
==
map
.
phi2
(
f2
))
//
{
{
//
if(map.getEmbedding(VERTEX, map.phi_1(map.phi2(f2))) == map.getEmbedding(VERTEX, map.phi_1(map.phi2(f1))))
if
(
map
.
getEmbedding
(
VERTEX
,
map
.
phi_1
(
map
.
phi2
(
f2
)))
==
map
.
getEmbedding
(
VERTEX
,
map
.
phi_1
(
map
.
phi2
(
f1
))))
//
{
{
//
map.Map3::sewVolumes(map.phi2(f2), map.phi2(f1));
map
.
Map3
::
sewVolumes
(
map
.
phi2
(
f2
),
map
.
phi2
(
f1
));
//
}
}
//
else
else
//
{
{
//
//
//id pour toutes les faces interieures
//id pour toutes les faces interieures
//
map.sewVolumes(map.phi2(f2), map.phi2(f1));
map
.
sewVolumes
(
map
.
phi2
(
f2
),
map
.
phi2
(
f1
));
//
//
//
}
}
//
//
//Fais a la couture !!!!!
//Fais a la couture !!!!!
//
unsigned int idface = map.getNewFaceId();
unsigned
int
idface
=
map
.
getNewFaceId
();
//
map.setFaceId(map.phi2(f1),idface, FACE);
map
.
setFaceId
(
map
.
phi2
(
f1
),
idface
,
FACE
);
//
}
}
//
//
//
//FAIS a la couture !!!!!!!
//FAIS a la couture !!!!!!!
//
//id pour toutes les aretes exterieurs des faces quadrangulees
//id pour toutes les aretes exterieurs des faces quadrangulees
//
unsigned int idedge = map.getEdgeId(f1);
unsigned
int
idedge
=
map
.
getEdgeId
(
f1
);
//
map.setEdgeId(map.phi2(f1), idedge, DART);
map
.
setEdgeId
(
map
.
phi2
(
f1
),
idedge
,
DART
);