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
KennethVanhoey
CGoGN
Commits
d27ef426
Commit
d27ef426
authored
Nov 28, 2011
by
Pierre Kraemer
Browse files
Options
Browse Files
Download
Plain Diff
Merge cgogn:~untereiner/CGoGN
Conflicts: include/Algo/Modelisation/polyhedron.hpp
parents
bd0de59b
fdb2571f
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
124 additions
and
136 deletions
+124
-136
Apps/Examples/decimationVolumique.cpp
Apps/Examples/decimationVolumique.cpp
+2
-2
Apps/Examples/simpleGMap2.cpp
Apps/Examples/simpleGMap2.cpp
+1
-1
Apps/Examples/squelette3carte.cpp
Apps/Examples/squelette3carte.cpp
+2
-2
include/Algo/Import/importObjEle.hpp
include/Algo/Import/importObjEle.hpp
+2
-2
include/Algo/Import/importTet.hpp
include/Algo/Import/importTet.hpp
+25
-39
include/Algo/Import/importTs.hpp
include/Algo/Import/importTs.hpp
+2
-2
include/Algo/Modelisation/polyhedron.h
include/Algo/Modelisation/polyhedron.h
+5
-5
include/Algo/Modelisation/polyhedron.hpp
include/Algo/Modelisation/polyhedron.hpp
+56
-62
include/Algo/Modelisation/primitives3d.h
include/Algo/Modelisation/primitives3d.h
+1
-1
include/Algo/Modelisation/primitives3d.hpp
include/Algo/Modelisation/primitives3d.hpp
+7
-2
include/Algo/Render/GL2/topo3Render.h
include/Algo/Render/GL2/topo3Render.h
+3
-3
include/Algo/Render/GL2/topo3Render.hpp
include/Algo/Render/GL2/topo3Render.hpp
+7
-4
include/Algo/Render/GL2/topoRender.h
include/Algo/Render/GL2/topoRender.h
+3
-3
src/Algo/ImplicitHierarchicalMesh/ihm3.cpp
src/Algo/ImplicitHierarchicalMesh/ihm3.cpp
+6
-6
src/Algo/Render/topoRender.cpp
src/Algo/Render/topoRender.cpp
+1
-1
src/Topology/map/map3.cpp
src/Topology/map/map3.cpp
+1
-1
No files found.
Apps/Examples/decimationVolumique.cpp
View file @
d27ef426
...
...
@@ -321,8 +321,8 @@ void MyGlutWin::initGUI()
void
maillageTest
()
{
/// on creer une carte
Dart
dd
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
myMap
,
4
);
Dart
ee
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
myMap
,
4
);
Dart
dd
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
myMap
,
4
);
Dart
ee
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
myMap
,
4
);
myMap
.
sewVolumes
(
dd
,
ee
);
// plongement
...
...
Apps/Examples/simpleGMap2.cpp
View file @
d27ef426
...
...
@@ -31,7 +31,7 @@ SimpleGMap2::SimpleGMap2()
{
position
=
myMap
.
addAttribute
<
PFP
::
VEC3
>
(
VERTEX
,
"position"
);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Tetra
(
myMap
);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createTetra
(
myMap
);
position
[
d
]
=
VEC3
(
0
,
0
,
0
);
position
[
myMap
.
phi1
(
d
)]
=
VEC3
(
10
,
0
,
15
);
position
[
myMap
.
phi_1
(
d
)]
=
VEC3
(
10
,
20
,
15
);
...
...
Apps/Examples/squelette3carte.cpp
View file @
d27ef426
...
...
@@ -269,8 +269,8 @@ void MyGlutWin::initGUI()
void
maillageTest
()
{
/// on creer une carte
Dart
dd
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
myMap
,
4
);
Dart
ee
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
myMap
,
4
);
Dart
dd
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
myMap
,
4
);
Dart
ee
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
myMap
,
4
);
myMap
.
sewVolumes
(
dd
,
ee
);
// plongement
...
...
include/Algo/Import/importObjEle.hpp
View file @
d27ef426
...
...
@@ -146,8 +146,8 @@ bool importOFFWithELERegions(typename PFP::MAP& map, const std::string& filename
oss
>>
nbe
;
// CGoGNout << "tetra number : " << nbe << CGoGNendl;
//Algo::Modelisation::Polyhedron<PFP>::create
Oriented
Tetra(map);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
map
,
4
);
//Algo::Modelisation::Polyhedron<PFP>::createTetra(map);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
map
,
4
);
Geom
::
Vec4ui
pt
;
oss
>>
pt
[
0
];
oss
>>
pt
[
1
];
...
...
include/Algo/Import/importTet.hpp
View file @
d27ef426
...
...
@@ -43,10 +43,10 @@ bool importTet(typename PFP::MAP& map, const std::string& filename, std::vector<
AttributeContainer
&
container
=
map
.
getAttributeContainer
(
VERTEX
)
;
unsigned
int
m_nbVertices
=
0
,
m_nbFaces
=
0
,
m_nbEdges
=
0
,
m_nbVolumes
=
0
;
unsigned
int
m_nbVertices
=
0
,
m_nbVolumes
=
0
;
AutoAttributeHandler
<
NoMathIONameAttribute
<
std
::
vector
<
Dart
>
>
>
vecDartsPerVertex
(
map
,
VERTEX
,
"incidents"
);
//
open file
//open file
std
::
ifstream
fp
(
filename
.
c_str
(),
std
::
ios
::
in
);
if
(
!
fp
.
good
())
{
...
...
@@ -56,20 +56,17 @@ bool importTet(typename PFP::MAP& map, const std::string& filename, std::vector<
std
::
string
ligne
;
unsigned
int
nbv
,
nbt
;
//
lecture des
n
o
mb
res de sommets/tetra
//
reading
n
u
mb
er of vertices
std
::
getline
(
fp
,
ligne
);
std
::
stringstream
oss
(
ligne
);
oss
>>
nbv
;
//CGoGNout << "nbV = " << nbv << CGoGNendl;
// reading number of tetrahedra
std
::
getline
(
fp
,
ligne
);
std
::
stringstream
oss2
(
ligne
);
oss2
>>
nbt
;
//CGoGNout << "nbT = " << nbt << CGoGNendl;
//lecture sommets
//reading vertices
std
::
vector
<
unsigned
int
>
verticesID
;
verticesID
.
reserve
(
nbv
);
for
(
unsigned
int
i
=
0
;
i
<
nbv
;
++
i
)
...
...
@@ -85,32 +82,27 @@ bool importTet(typename PFP::MAP& map, const std::string& filename, std::vector<
oss
>>
x
;
oss
>>
y
;
oss
>>
z
;
//
on peut ajouter ici la lecture de couleur si elle exist
e
//
TODO : if required read other vertices attributes her
e
VEC3
pos
(
x
*
scaleFactor
,
y
*
scaleFactor
,
z
*
scaleFactor
);
//CGoGNout << "VEC3 = " << pos << CGoGNendl;
//
CGoGNout << "VEC3 = " << pos << CGoGNendl;
unsigned
int
id
=
container
.
insertLine
();
position
[
id
]
=
pos
;
verticesID
.
push_back
(
id
);
}
m_nbVertices
=
verticesID
.
size
()
;
m_nbVertices
=
nbv
;
//CGoGNout << "nbVertices = " << m_nbVertices << CGoGNendl;
m_nbVolumes
=
nbt
;
//CGoGNout << "nbVolumes = " << m_nbVolumes << CGoGNendl;
// lecture tetra
// normalement m_nbVolumes*12 (car on ne charge que des tetra)
m_nbFaces
=
nbt
*
4
;
CGoGNout
<<
"nb points = "
<<
m_nbVertices
<<
" / nb faces = "
<<
m_nbFaces
<<
" / nb edges = "
<<
m_nbEdges
<<
" / nb tet = "
<<
m_nbVolumes
<<
CGoGNendl
;
CGoGNout
<<
"nb points = "
<<
m_nbVertices
<<
" / nb tet = "
<<
m_nbVolumes
<<
CGoGNendl
;
//Read and embed tetrahedr
a TODO
//Read and embed
all
tetrahedr
ons
for
(
unsigned
int
i
=
0
;
i
<
m_nbVolumes
;
++
i
)
{
//start one tetra
int
nbe
;
do
{
...
...
@@ -118,59 +110,53 @@ bool importTet(typename PFP::MAP& map, const std::string& filename, std::vector<
}
while
(
ligne
.
size
()
==
0
);
std
::
stringstream
oss
(
ligne
);
oss
>>
nbe
;
// CGoGNout << "tetra number : " << nbe << CGoGNendl
;
oss
>>
nbe
;
//number of vertices =4
assert
(
nbe
==
4
)
;
//Algo::Modelisation::Polyhedron<PFP>::createOrientedTetra(map);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createOrientedPolyhedron
(
map
,
4
);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
map
,
4
);
Geom
::
Vec4ui
pt
;
oss
>>
pt
[
0
];
oss
>>
pt
[
1
];
oss
>>
pt
[
2
];
oss
>>
pt
[
3
];
//regions
?
oss
>>
nbe
;
//
if
regions
are defined use this number
oss
>>
nbe
;
//ignored here
// CGoGNout << "\t embedding number : " << pt[0] << " " << pt[1] << " " << pt[2] << " " << pt[3] << CGoGNendl;
// Embed three vertices
// Embed three
"base"
vertices
for
(
unsigned
int
j
=
0
;
j
<
3
;
++
j
)
{
// CGoGNout << "\t embedding number : " << pt[j];
FunctorSetEmb
<
typename
PFP
::
MAP
>
femb
(
map
,
VERTEX
,
verticesID
[
pt
[
j
]]);
map
.
foreach_dart_of_vertex
(
d
,
femb
);
//apply foreach for gmaps : cannot be included in the following loop
//store darts per vertices to optimize reconstruction
Dart
dd
=
d
;
do
{
femb
(
dd
);
//vecDartPtrEmb[pt[j]].push_back(dd);
vecDartsPerVertex
[
pt
[
j
]].
push_back
(
dd
);
dd
=
map
.
phi1
(
map
.
phi2
(
dd
));
}
while
(
dd
!=
d
);
d
=
map
.
phi1
(
d
);
// CGoGNout << " done" << CGoGNendl;
}
//Embed the last vertex
// CGoGNout << "\t embedding number : " << pt[3] << CGoGNendl;
//Embed the last "top" vertex
d
=
map
.
phi_1
(
map
.
phi2
(
d
));
FunctorSetEmb
<
typename
PFP
::
MAP
>
femb
(
map
,
VERTEX
,
verticesID
[
pt
[
3
]]);
map
.
foreach_dart_of_vertex
(
d
,
femb
);
//apply foreach for gmaps : cannot be included in the following loop
//store darts per vertices to optimize reconstruction
Dart
dd
=
d
;
do
{
femb
(
dd
);
// CGoGNout << "embed" << CGoGNendl;
//vecDartPtrEmb[pt[3]].push_back(dd);
vecDartsPerVertex
[
pt
[
3
]].
push_back
(
dd
);
dd
=
map
.
phi1
(
map
.
phi2
(
dd
));
}
while
(
dd
!=
d
);
//
CGoGNout << "
end tetra
" << CGoGNendl;
//end
of
tetra
}
// CGoGNout << "end 1/2" << CGoGNendl;
...
...
include/Algo/Import/importTs.hpp
View file @
d27ef426
...
...
@@ -131,8 +131,8 @@ bool importTs(typename PFP::MAP& map, const std::string& filename, std::vector<s
std
::
stringstream
oss
(
ligne
);
// CGoGNout << "tetra number : " << nbe << CGoGNendl;
//Algo::Modelisation::Polyhedron<PFP>::create
Oriented
Tetra(map);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
map
,
4
);
//Algo::Modelisation::Polyhedron<PFP>::createTetra(map);
Dart
d
=
Algo
::
Modelisation
::
Polyhedron
<
PFP
>::
createPolyhedron
(
map
,
4
);
Geom
::
Vec4ui
pt
;
oss
>>
pt
[
0
];
oss
>>
pt
[
1
];
...
...
include/Algo/Modelisation/polyhedron.h
View file @
d27ef426
...
...
@@ -170,27 +170,27 @@ public:
/**
* create simple simple polyhedron (not handled by Polyhedron object)
*/
static
Dart
create
Oriented
Polyhedron
(
typename
PFP
::
MAP
&
the_map
,
int
nbFaces
);
static
Dart
createPolyhedron
(
typename
PFP
::
MAP
&
the_map
,
int
nbFaces
);
/**
* create simple simple tetrahedron (not handled by Polyhedron object)
*/
static
Dart
create
Oriented
Tetra
(
typename
PFP
::
MAP
&
the_map
);
static
Dart
createTetra
(
typename
PFP
::
MAP
&
the_map
);
/**
* create simple simple pyramid (not handled by Polyhedron object)
*/
static
Dart
create
Oriented
Pyra
(
typename
PFP
::
MAP
&
the_map
);
static
Dart
createPyra
(
typename
PFP
::
MAP
&
the_map
);
/**
* create simple simple hexaedron (not handled by Polyhedron object)
*/
static
Dart
create
Oriented
Hexa
(
typename
PFP
::
MAP
&
the_map
);
static
Dart
createHexa
(
typename
PFP
::
MAP
&
the_map
);
/**
* create simple simple prism (not handled by Polyhedron object)
*/
static
Dart
create
Oriented
Prism
(
typename
PFP
::
MAP
&
the_map
);
static
Dart
createPrism
(
typename
PFP
::
MAP
&
the_map
);
/*
* get the reference dart
...
...
include/Algo/Modelisation/polyhedron.hpp
View file @
d27ef426
...
...
@@ -167,7 +167,7 @@ m_positions(p1.m_positions)
}
template <typename PFP>
Dart
Polyhedron
<
PFP
>::
create
Oriented
Tetra
(
typename
PFP
::
MAP
&
the_map
)
Dart Polyhedron<PFP>::createTetra(typename PFP::MAP& the_map)
{
Dart base = the_map.newFace(3,false);
...
...
@@ -188,102 +188,100 @@ Dart Polyhedron<PFP>::createOrientedTetra(typename PFP::MAP& the_map)
}
template <typename PFP>
Dart
Polyhedron
<
PFP
>::
create
Oriented
Pyra
(
typename
PFP
::
MAP
&
the_map
)
Dart Polyhedron<PFP>::createPyra(typename PFP::MAP& the_map)
{
Dart
base
=
the_map
.
newFace
(
4
,
false
);
Dart base = the_map.newFace(4,
false);
Dart
side1
=
the_map
.
newFace
(
3
,
false
);
the_map
.
sewFaces
(
base
,
side1
,
false
);
Dart side1 = the_map.newFace(3,
false);
the_map.sewFaces(base,
side1,
false);
Dart
side2
=
the_map
.
newFace
(
3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
base
),
side2
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side1
),
the_map
.
phi1
(
side2
),
false
);
Dart side2 = the_map.newFace(3,
false);
the_map.sewFaces(the_map.phi1(base),
side2,
false);
the_map.sewFaces(the_map.phi_1(side1), the_map.phi1(side2),
false);
Dart
side3
=
the_map
.
newFace
(
3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
the_map
.
phi1
(
base
)),
side3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side2
),
the_map
.
phi1
(
side3
),
false
);
Dart side3 = the_map.newFace(3,
false);
the_map.sewFaces(the_map.phi1(the_map.phi1(base)),
side3,
false);
the_map.sewFaces(the_map.phi_1(side2), the_map.phi1(side3),
false);
Dart
side4
=
the_map
.
newFace
(
3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
base
),
side4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side3
),
the_map
.
phi1
(
side4
),
false
);
Dart side4 = the_map.newFace(3,
false);
the_map.sewFaces(the_map.phi_1(base),
side4,
false);
the_map.sewFaces(the_map.phi_1(side3), the_map.phi1(side4),
false);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side4
),
the_map
.
phi1
(
side1
),
false
);
the_map.sewFaces(the_map.phi_1(side4), the_map.phi1(side1),
false);
return base;
}
template <typename PFP>
Dart
Polyhedron
<
PFP
>::
create
Oriented
Hexa
(
typename
PFP
::
MAP
&
the_map
)
Dart Polyhedron<PFP>::createHexa(typename PFP::MAP& the_map)
{
Dart
base
=
the_map
.
newFace
(
4
,
false
);
Dart base = the_map.newFace(4,
false);
Dart
side1
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
base
,
side1
,
false
);
Dart side1 = the_map.newFace(4,
false);
the_map.sewFaces(base,
side1,
false);
Dart
side2
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
base
),
side2
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side1
),
the_map
.
phi1
(
side2
),
false
);
Dart side2 = the_map.newFace(4,
false);
the_map.sewFaces(the_map.phi1(base),
side2,
false);
the_map.sewFaces(the_map.phi_1(side1), the_map.phi1(side2),
false);
Dart
side3
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
the_map
.
phi1
(
base
)),
side3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side2
),
the_map
.
phi1
(
side3
),
false
);
Dart side3 = the_map.newFace(4,
false);
the_map.sewFaces(the_map.phi1(the_map.phi1(base)),
side3,
false);
the_map.sewFaces(the_map.phi_1(side2), the_map.phi1(side3),
false);
Dart
side4
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
base
),
side4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side3
),
the_map
.
phi1
(
side4
),
false
);
Dart side4 = the_map.newFace(4,
false);
the_map.sewFaces(the_map.phi_1(base),
side4,
false);
the_map.sewFaces(the_map.phi_1(side3), the_map.phi1(side4),
false);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side4
),
the_map
.
phi1
(
side1
),
false
);
the_map.sewFaces(the_map.phi_1(side4), the_map.phi1(side1),
false);
Dart
top
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
top
,
the_map
.
phi1
(
the_map
.
phi1
(
side1
)),
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
top
),
the_map
.
phi1
(
the_map
.
phi1
(
side2
)),
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
the_map
.
phi1
(
top
)),
the_map
.
phi1
(
the_map
.
phi1
(
side3
)),
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
top
),
the_map
.
phi1
(
the_map
.
phi1
(
side4
)),
false
);
Dart top = the_map.newFace(4,
false);
the_map.sewFaces(top,
the_map.phi1(the_map.phi1(side1)),
false);
the_map.sewFaces(the_map.phi_1(top),
the_map.phi1(the_map.phi1(side2)),
false);
the_map.sewFaces(the_map.phi1(the_map.phi1(top)),
the_map.phi1(the_map.phi1(side3)),
false);
the_map.sewFaces(the_map.phi1(top),
the_map.phi1(the_map.phi1(side4)),
false);
return base;
}
template <typename PFP>
Dart
Polyhedron
<
PFP
>::
create
Oriented
Prism
(
typename
PFP
::
MAP
&
the_map
)
Dart Polyhedron<PFP>::createPrism(typename PFP::MAP& the_map)
{
Dart
base
=
the_map
.
newFace
(
3
,
false
);
Dart base = the_map.newFace(3,
false);
Dart
side1
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
base
,
side1
,
false
);
Dart side1 = the_map.newFace(4,
false);
the_map.sewFaces(base,
side1,
false);
Dart
side2
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
base
),
side2
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side1
),
the_map
.
phi1
(
side2
),
false
);
Dart side2 = the_map.newFace(4,
false);
the_map.sewFaces(the_map.phi1(base),
side2,
false);
the_map.sewFaces(the_map.phi_1(side1), the_map.phi1(side2),
false);
Dart
side3
=
the_map
.
newFace
(
4
,
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
the_map
.
phi1
(
base
)),
side3
,
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side2
),
the_map
.
phi1
(
side3
),
false
);
Dart side3 = the_map.newFace(4,
false);
the_map.sewFaces(the_map.phi1(the_map.phi1(base)),
side3,
false);
the_map.sewFaces(the_map.phi_1(side2), the_map.phi1(side3),
false);
the_map
.
sewFaces
(
the_map
.
phi_1
(
side3
),
the_map
.
phi1
(
side1
),
false
);
the_map.sewFaces(the_map.phi_1(side3), the_map.phi1(side1),
false);
Dart
top
=
the_map
.
newFace
(
3
,
false
);
the_map
.
sewFaces
(
top
,
the_map
.
phi1
(
the_map
.
phi1
(
side1
)),
false
);
the_map
.
sewFaces
(
the_map
.
phi_1
(
top
),
the_map
.
phi1
(
the_map
.
phi1
(
side2
)),
false
);
the_map
.
sewFaces
(
the_map
.
phi1
(
top
),
the_map
.
phi1
(
the_map
.
phi1
(
side3
)),
false
);
Dart top = the_map.newFace(3,
false);
the_map.sewFaces(top,
the_map.phi1(the_map.phi1(side1)),
false);
the_map.sewFaces(the_map.phi_1(top),
the_map.phi1(the_map.phi1(side2)),
false);
the_map.sewFaces(the_map.phi1(top),
the_map.phi1(the_map.phi1(side3)),
false);
return base;
}
template <typename PFP>
Dart
Polyhedron
<
PFP
>::
create
Oriented
Polyhedron
(
typename
PFP
::
MAP
&
the_map
,
int
n
)
Dart Polyhedron<PFP>::createPolyhedron(typename PFP::MAP& the_map, int n)
{
Dart d;
switch (n)
{
case
4
:
d
=
create
Oriented
Tetra
(
the_map
);
case 4 : d = createTetra(the_map);
break;
case
5
:
d
=
create
Oriented
Pyra
(
the_map
);
case 5 : d = createPyra(the_map);
break;
case
6
:
d
=
create
Oriented
Hexa
(
the_map
);
case 6 : d = createHexa(the_map);
break;
}
return d;
}
...
...
@@ -1083,8 +1081,6 @@ void Polyhedron<PFP>::mark(CellMarker& m)
// }
//}
template <typename PFP>
void Polyhedron<PFP>::embedTwistedStrip( float radius_min, float radius_max, float turns)
{
...
...
@@ -1205,10 +1201,8 @@ void Polyhedron<PFP>::embedHelicoid(float radius_min, float radius_max, float ma
// return d;
// }
} // namespace Modelisation
} // namespace Algo
}
//end namespace
}
//end namespace
}
//end namespace
} // namespace CGoGN
include/Algo/Modelisation/primitives3d.h
View file @
d27ef426
...
...
@@ -105,7 +105,7 @@ protected:
*/
Dart
HexaGrid2Topo
(
int
nx
,
int
ny
);
Dart
create
Oriented
Hexa
();
Dart
createHexa
();
public:
...
...
include/Algo/Modelisation/primitives3d.hpp
View file @
d27ef426
...
...
@@ -33,7 +33,7 @@ namespace Modelisation
//TEMPORAIRE
template
<
typename
PFP
>
Dart
Primitive3D
<
PFP
>::
create
Oriented
Hexa
()
Dart
Primitive3D
<
PFP
>::
createHexa
()
{
Dart
base
=
m_map
.
newFace
(
4
);
...
...
@@ -67,13 +67,18 @@ template <typename PFP>
Dart
Primitive3D
<
PFP
>::
HexaGrid1Topo
(
int
nx
)
{
// first cube
<<<<<<<
HEAD
Dart
d0
=
createOrientedHexa
();
//return a dart from the base of the cube
m_tableVertDarts
.
push_back
(
d0
);
//push_back darts frome the base of cubes
=======
Dart
d0
=
createHexa
();
m_tableVertDarts
.
push_back
(
d0
);
>>>>>>>
9
d09fe01ab3a12525ca57c400eb2777dfbc5b528
Dart
d1
=
m_map
.
template
phi
<
2112
>(
d0
);
for
(
int
i
=
1
;
i
<
nx
;
++
i
)
{
Dart
d2
=
create
Oriented
Hexa
();
Dart
d2
=
createHexa
();
m_tableVertDarts
.
push_back
(
d2
);
m_map
.
sewVolumes
(
d1
,
d2
);
d1
=
m_map
.
template
phi
<
2112
>(
d2
);
...
...
include/Algo/Render/GL2/topo3Render.h
View file @
d27ef426
...
...
@@ -144,7 +144,7 @@ protected:
void
popColors
();
/**
* pick dart with color set b
e
y setDartsIdColor
* pick dart with color set by setDartsIdColor
* @param x position of mouse (x)
* @param y position of mouse (pass H-y, classic pb of origin)
* @return the dart or NIL
...
...
@@ -270,7 +270,7 @@ class Topo3RenderMapD: public Topo3Render
{
public:
/**
* update all drawing buffers
* update all drawing buffers
to render a dual map
* @param map the map
* @param good selector
* @param positions attribute of position vertices
...
...
@@ -287,7 +287,7 @@ class Topo3RenderGMap: public Topo3Render
{
public:
/**
* update all drawing buffers
* update all drawing buffers
to render a gmap
* @param map the map
* @param good selector
* @param positions attribute of position vertices
...
...
include/Algo/Render/GL2/topo3Render.hpp
View file @
d27ef426
...
...
@@ -305,7 +305,6 @@ Dart Topo3Render::picking(typename PFP::MAP& map, const FunctorSelect& good, int
Dart
d
=
pickColor
(
x
,
y
);
popColors
();
return
d
;
}
template
<
typename
PFP
>
...
...
@@ -320,7 +319,6 @@ void Topo3RenderGMap::updateData(typename PFP::MAP& map, const FunctorSelect& go
AutoAttributeHandler
<
Geom
::
Vec3f
>
vert
(
map
,
DART
);
if
(
m_attIndex
.
map
()
!=
&
map
)
// if(!m_attIndex.isValid())
{
m_attIndex
=
map
.
template
addAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
}
...
...
@@ -388,13 +386,15 @@ void Topo3RenderGMap::updateData(typename PFP::MAP& map, const FunctorSelect& go
}
}
m_nbDarts
*=
2
;
m_nbDarts
*=
2
;
// x2 : only one orientation is used for the previous computation, multiply by 2 to get the number of darts
//colors
m_vbo4
->
bind
();
glBufferData
(
GL_ARRAY_BUFFER
,
2
*
m_nbDarts
*
sizeof
(
VEC3
),
0
,
GL_STREAM_DRAW
);
GLvoid
*
ColorDartsBuffer
=
glMapBuffer
(
GL_ARRAY_BUFFER
,
GL_READ_WRITE
);
VEC3
*
colorDartBuf
=
reinterpret_cast
<
VEC3
*>
(
ColorDartsBuffer
);
//darts
m_vbo0
->
bind
();
glBufferData
(
GL_ARRAY_BUFFER
,
2
*
m_nbDarts
*
sizeof
(
VEC3
),
0
,
GL_STREAM_DRAW
);
GLvoid
*
PositionDartsBuffer
=
glMapBuffer
(
GL_ARRAY_BUFFER
,
GL_READ_WRITE
);
...
...
@@ -418,8 +418,11 @@ void Topo3RenderGMap::updateData(typename PFP::MAP& map, const FunctorSelect& go
{
const
VEC3
&
P
=
positions
[
dd
];
vecPos
.
push_back
(
P
);
// m_attIndex[dd] = posDBI;
m_attIndex
[
dd
]
=
posDBI
;
posDBI
+=
2
;
m_attIndex
[
map
.
beta0
(
dd
)]
=
posDBI
;
//for gmap : also affect a number to the other orientation for picking
posDBI
+=
2
;
center
+=
P
;
dd
=
map
.
phi1
(
dd
);
}
while
(
dd
!=
d
);
...
...
include/Algo/Render/GL2/topoRender.h
View file @
d27ef426
...
...
@@ -189,7 +189,7 @@ public:
/**
* pick dart with color set b
e
y setDartsIdColor
* pick dart with color set by setDartsIdColor
* Do not forget to apply same transformation to scene before picking than before drawing !
* @param map the map in which we pick (same as drawn !)
* @param good the selector (same as used during drawing)
...
...
@@ -205,7 +205,7 @@ class TopoRenderMapD : public TopoRender
{
public:
/**
* update all drawing buffers
* update all drawing buffers
to render a dual map
* @param map the map
* @param positions attribute of position vertices
* @param ke exploding coef for edge
...
...
@@ -220,7 +220,7 @@ class TopoRenderGMap : public TopoRender
{
public:
/**
* update all drawing buffers
* update all drawing buffers
to render a gmap
* @param map the map
* @param positions attribute of position vertices
* @param ke exploding coef for edge
...
...
src/Algo/ImplicitHierarchicalMesh/ihm3.cpp
View file @
d27ef426
...
...
@@ -481,10 +481,10 @@ bool ImplicitHierarchicalMap3::faceCanBeCoarsened(Dart d)
subd
=
true
;
Dart
d3
=
phi3
(
d
);
std
::
cout
<<
"d3 = "
<<
d3
<<
std
::
endl
;
std
::
cout
<<
"d = "
<<
d
<<
std
::
endl
;
std
::
cout
<<
"curLevel = "
<<
m_curLevel
<<
std
::
endl
;
std
::
cout
<<
"volSubd(d3) = "
<<
volumeIsSubdivided
(
d3
)
<<
std
::
endl
;
//
std::cout << "d3 = " << d3 << std::endl;
//
std::cout << "d = " << d << std::endl;
//
std::cout << "curLevel = " << m_curLevel << std::endl;
//
std::cout << "volSubd(d3) = " << volumeIsSubdivided(d3) << std::endl;
//tester si le volume voisin est subdivise
if
(
d3
!=
d
&&
volumeIsSubdivided
(
d3
))
...
...
@@ -506,8 +506,8 @@ bool ImplicitHierarchicalMap3::faceCanBeCoarsened(Dart d)
--
m_curLevel
;
}
std
::
cout
<<
"subdNeighborhood = "
<<
subdNeighborhood
<<
std
::
endl
;
std
::
cout
<<
"faceCanBeCoarsened ? "
<<
(
subd
&&
!
subdNeighborhood
&&
subdOnce
)
<<
std
::
endl
;
//
std::cout << "subdNeighborhood = " << subdNeighborhood << std::endl;
//
std::cout << "faceCanBeCoarsened ? " << (subd && !subdNeighborhood && subdOnce) << std::endl;
return
subd
&&
!
subdNeighborhood
&&
subdOnce
;
}
...
...
src/Algo/Render/topoRender.cpp
View file @
d27ef426
...
...
@@ -227,7 +227,7 @@ Dart TopoRender::pickColor(unsigned int x, unsigned int y)
// draw in back buffer (not shown on screen)
drawDarts
();
// restore dart with
// restore dart wi
d
th
m_topo_dart_width
=
dw
;
// read the pixel under the mouse in back buffer
...
...
src/Topology/map/map3.cpp
View file @
d27ef426
...
...
@@ -210,7 +210,7 @@ bool Map3::mergeVolumes(Dart d)
if
(
!
isBoundaryFace
(
d
))
{
Dart
e
=
phi3
(
d
);