Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CGoGN
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thomas Pitiot
CGoGN
Commits
7114af20
Commit
7114af20
authored
Feb 02, 2015
by
Sylvain Thery
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 'master'
Master once upon a time See merge request !39
parents
7576a3e9
21e86c78
Changes
60
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
60 changed files
with
4284 additions
and
1158 deletions
+4284
-1158
Apps/Examples/mcmesh.cpp
Apps/Examples/mcmesh.cpp
+2
-1
Apps/Examples/viewer.cpp
Apps/Examples/viewer.cpp
+6
-3
Apps/Examples/volumeExplorer.cpp
Apps/Examples/volumeExplorer.cpp
+21
-2
Apps/Tuto/Modelling/tuto_oper2.cpp
Apps/Tuto/Modelling/tuto_oper2.cpp
+30
-0
Apps/Tuto/Modelling/tuto_oper2.h
Apps/Tuto/Modelling/tuto_oper2.h
+1
-0
Apps/Tuto/Modelling/tuto_oper2.ui
Apps/Tuto/Modelling/tuto_oper2.ui
+15
-1
Apps/Tuto/Modelling/tuto_oper3.cpp
Apps/Tuto/Modelling/tuto_oper3.cpp
+25
-9
Apps/Tuto/Modelling/tuto_oper3.ui
Apps/Tuto/Modelling/tuto_oper3.ui
+10
-0
CMakeLists.txt
CMakeLists.txt
+1
-1
SCHNApps/Plugins/CMakeLists.txt
SCHNApps/Plugins/CMakeLists.txt
+2
-0
SCHNApps/include/texture.h
SCHNApps/include/texture.h
+3
-0
SCHNApps/include/types.h
SCHNApps/include/types.h
+3
-0
ThirdParty/build/.gitignore
ThirdParty/build/.gitignore
+0
-2
ThirdParty/buildDebug/.gitignore
ThirdParty/buildDebug/.gitignore
+0
-2
apps_cmake.txt
apps_cmake.txt
+1
-1
build/.gitignore
build/.gitignore
+0
-2
buildDebug/.gitignore
buildDebug/.gitignore
+0
-2
include/Algo/Export/export.hpp
include/Algo/Export/export.hpp
+1
-1
include/Algo/Export/exportVol.h
include/Algo/Export/exportVol.h
+3
-0
include/Algo/Export/exportVol.hpp
include/Algo/Export/exportVol.hpp
+75
-0
include/Algo/ImplicitHierarchicalMesh/ihm3.h
include/Algo/ImplicitHierarchicalMesh/ihm3.h
+144
-144
include/Algo/ImplicitHierarchicalMesh/ihm3.hpp
include/Algo/ImplicitHierarchicalMesh/ihm3.hpp
+186
-185
include/Algo/ImplicitHierarchicalMesh/subdivision3.h
include/Algo/ImplicitHierarchicalMesh/subdivision3.h
+15
-15
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
+280
-279
include/Algo/Import/import.hpp
include/Algo/Import/import.hpp
+711
-408
include/Algo/Import/import2tables.h
include/Algo/Import/import2tables.h
+4
-0
include/Algo/Import/import2tablesSurface.hpp
include/Algo/Import/import2tablesSurface.hpp
+86
-0
include/Algo/Import/import2tablesVolume.hpp
include/Algo/Import/import2tablesVolume.hpp
+62
-31
include/Algo/MC/image.h
include/Algo/MC/image.h
+2
-2
include/Algo/MC/image.hpp
include/Algo/MC/image.hpp
+2
-2
include/Algo/Modelisation/polyhedron.h
include/Algo/Modelisation/polyhedron.h
+2
-0
include/Algo/Modelisation/polyhedron.hpp
include/Algo/Modelisation/polyhedron.hpp
+21
-0
include/Algo/Modelisation/tetrahedralization.h
include/Algo/Modelisation/tetrahedralization.h
+1
-1
include/Algo/Modelisation/tetrahedralization.hpp
include/Algo/Modelisation/tetrahedralization.hpp
+3
-3
include/Algo/Multiresolution/IHM2/ihm2_PrimalAdapt.hpp
include/Algo/Multiresolution/IHM2/ihm2_PrimalAdapt.hpp
+5
-8
include/Algo/Multiresolution/IHM3/ihm3_PrimalAdapt.h
include/Algo/Multiresolution/IHM3/ihm3_PrimalAdapt.h
+208
-0
include/Algo/Multiresolution/IHM3/ihm3_PrimalAdapt.hpp
include/Algo/Multiresolution/IHM3/ihm3_PrimalAdapt.hpp
+956
-0
include/Algo/Multiresolution/Map2MR/Masks/catmullClark.h
include/Algo/Multiresolution/Map2MR/Masks/catmullClark.h
+6
-6
include/Algo/Multiresolution/Map2MR/Masks/lerp.h
include/Algo/Multiresolution/Map2MR/Masks/lerp.h
+6
-6
include/Algo/Multiresolution/Map2MR/Masks/loop.h
include/Algo/Multiresolution/Map2MR/Masks/loop.h
+4
-4
include/Algo/Multiresolution/Map2MR/Masks/sqrt3.h
include/Algo/Multiresolution/Map2MR/Masks/sqrt3.h
+4
-4
include/Algo/Multiresolution/Map3MR/Filters/bertram.h
include/Algo/Multiresolution/Map3MR/Filters/bertram.h
+1
-1
include/Algo/Multiresolution/Map3MR/Masks/lerp.h
include/Algo/Multiresolution/Map3MR/Masks/lerp.h
+9
-9
include/Algo/Multiresolution/Map3MR/map3MR_PrimalAdapt.h
include/Algo/Multiresolution/Map3MR/map3MR_PrimalAdapt.h
+0
-3
include/Topology/generic/dartmarker.h
include/Topology/generic/dartmarker.h
+14
-0
include/Topology/generic/traversor/traversor2_closed.h
include/Topology/generic/traversor/traversor2_closed.h
+2
-2
include/Topology/ihmap/ihm2.h
include/Topology/ihmap/ihm2.h
+2
-2
include/Topology/ihmap/ihm2.hpp
include/Topology/ihmap/ihm2.hpp
+4
-8
include/Topology/ihmap/ihm3.h
include/Topology/ihmap/ihm3.h
+301
-0
include/Topology/ihmap/ihm3.hpp
include/Topology/ihmap/ihm3.hpp
+715
-0
include/Topology/map/embeddedMap2.h
include/Topology/map/embeddedMap2.h
+5
-0
include/Topology/map/embeddedMap3.h
include/Topology/map/embeddedMap3.h
+5
-0
include/Topology/map/map2.h
include/Topology/map/map2.h
+12
-0
include/Topology/map/map2.hpp
include/Topology/map/map2.hpp
+39
-1
include/Topology/map/map3.h
include/Topology/map/map3.h
+5
-0
include/Topology/map/map3.hpp
include/Topology/map/map3.hpp
+47
-1
src/Algo/ImplicitHierarchicalMesh/ihm3.cpp
src/Algo/ImplicitHierarchicalMesh/ihm3.cpp
+6
-6
src/Topology/ihmap/ihm3.cpp
src/Topology/ihmap/ihm3.cpp
+133
-0
src/Topology/map/embeddedMap2.cpp
src/Topology/map/embeddedMap2.cpp
+19
-0
src/Topology/map/embeddedMap3.cpp
src/Topology/map/embeddedMap3.cpp
+58
-0
No files found.
Apps/Examples/mcmesh.cpp
View file @
7114af20
...
...
@@ -168,7 +168,8 @@ void MCMesh::updateRender()
void
MCMesh
::
fromFile
(
char
*
fname
)
{
myImg
=
new
SAlgo
::
MC
::
Image
<
DATATYPE
>
();
myImg
->
loadInrgz
(
fname
);
//myImg->loadInrgz(fname);
myImg
->
loadVox
(
fname
);
CGoGNout
<<
"Image chargee"
<<
CGoGNendl
;
CGoGNout
<<
myImg
->
getWidthX
()
<<
"x"
<<
myImg
->
getWidthY
()
<<
"x"
<<
myImg
->
getWidthZ
()
<<
"voxels"
<<
CGoGNendl
;
}
...
...
Apps/Examples/viewer.cpp
View file @
7114af20
...
...
@@ -31,7 +31,7 @@ Viewer::Viewer() :
m_drawFaces
(
true
),
m_drawNormals
(
false
),
m_drawTopo
(
false
),
m_drawBoundaryTopo
(
tru
e
),
m_drawBoundaryTopo
(
fals
e
),
m_render
(
NULL
),
m_phongShader
(
NULL
),
m_flatShader
(
NULL
),
...
...
@@ -87,7 +87,7 @@ void Viewer::cb_initGL()
m_render
=
new
Algo
::
Render
::
GL2
::
MapRender
()
;
m_topoRender
=
new
Algo
::
Render
::
GL2
::
TopoRender
()
;
m_topoRender
->
setInitialDartsColor
(
0.25
f
,
0.25
f
,
0.25
f
)
;
m_topoRender
->
setInitialDartsColor
(
1.0
f
,
1.00
f
,
1.00
f
)
;
m_positionVBO
=
new
Utils
::
VBO
()
;
m_normalVBO
=
new
Utils
::
VBO
()
;
...
...
@@ -552,11 +552,14 @@ void Viewer::importMesh(std::string& filename)
// myMap.enableQuickTraversal<VERTEX>() ;
std
::
cout
<<
"The mesh is "
<<
(
myMap
.
isOpen
()
?
"open"
:
"closed"
)
<<
std
::
endl
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
Algo
::
Render
::
GL2
::
POINTS
)
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
Algo
::
Render
::
GL2
::
LINES
)
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
Algo
::
Render
::
GL2
::
TRIANGLES
)
;
m_topoRender
->
updateData
<
PFP
>
(
myMap
,
position
,
0.85
f
,
0.85
f
,
m_drawBoundaryTopo
)
;
m_topoRender
->
updateData
<
PFP
>
(
myMap
,
position
,
0.85
f
,
0.85
f
,
m_drawBoundaryTopo
,
true
)
;
bb
=
Algo
::
Geometry
::
computeBoundingBox
<
PFP
>
(
myMap
,
position
)
;
normalBaseSize
=
bb
.
diagSize
()
/
100.0
f
;
...
...
Apps/Examples/volumeExplorer.cpp
View file @
7114af20
...
...
@@ -29,8 +29,10 @@
#include "Algo/Modelisation/polyhedron.h"
#include "Algo/Import/import.h"
#include "Algo/Geometry/volume.h"
#include "Algo/Modelisation/tetrahedralization.h"
#include "Algo/Geometry/area.h"
#include "Utils/chrono.h"
#include "Algo/Export/exportVol.h"
...
...
@@ -172,12 +174,14 @@ void MyQT::cb_Open()
for
(
Dart
d
=
tra
.
begin
();
d
!=
tra
.
end
();
d
=
tra
.
next
())
{
// float v = Algo::Geometry::tetrahedronVolume<PFP>(myMap, d, position);
color
[
d
]
=
PFP
::
VEC3
(
1.0
,
0
,
0
);
// color[d] = VEC3(v,0,0);
// if (v>maxV)
// maxV=v;
if
(
myMap
.
isVolumeIncidentToBoundary
(
d
))
color
[
d
]
=
VEC3
(
0
,
0
,
0
);
color
[
d
]
=
VEC3
(
1
,
0.41
,
0.706
);
}
// for (unsigned int i = color.begin(); i != color.end(); color.next(i))
// {
...
...
@@ -399,7 +403,7 @@ int main(int argc, char **argv)
{
*/
if
(
extension
==
std
::
string
(
".map"
))
if
(
extension
==
std
::
string
(
".map
bin
"
))
{
myMap
.
loadMapBin
(
filename
);
position
=
myMap
.
getAttribute
<
VEC3
,
VERTEX
,
MAP
>
(
"position"
)
;
...
...
@@ -421,6 +425,17 @@ int main(int argc, char **argv)
float
maxV
=
0.0
f
;
for
(
Dart
d
=
tra
.
begin
();
d
!=
tra
.
end
();
d
=
tra
.
next
())
{
// float v = Algo::Geometry::tetrahedronVolume<PFP>(myMap, d, position);
color
[
d
]
=
PFP
::
VEC3
(
1.0
,
0
,
0
);
// if (v>maxV)
// maxV=v;
if
(
myMap
.
isVolumeIncidentToBoundary
(
d
))
color
[
d
]
=
PFP
::
VEC3
(
1
,
0.41
,
0.706
);
//else
// color[d] = PFP::VEC3(1.0,0,0);
/*
float v = Algo::Geometry::tetrahedronVolume<PFP>(myMap, d, position);
color[d] = VEC3(v,0,0);
if (v>maxV)
...
...
@@ -435,6 +450,7 @@ int main(int argc, char **argv)
{
color[i][0] /= maxV;
color[i][2] = 1.0f - color[i][0];
*/
}
}
...
...
@@ -460,6 +476,9 @@ int main(int argc, char **argv)
// Algo::Volume::Export::exportNAS<PFP>(myMap,position,"/tmp/test1.nas");
// Algo::Volume::Export::exportVTU<PFP>(myMap,position,"/tmp/test3.vtu");
}
myMap
.
check
();
// un peu d'interface
QApplication
app
(
argc
,
argv
);
MyQT
sqt
;
...
...
Apps/Tuto/Modelling/tuto_oper2.cpp
View file @
7114af20
...
...
@@ -157,6 +157,17 @@ void MyQT::operation(int x)
m_selected2
=
NIL
;
}
break
;
case
10
:
CGoGNout
<<
"split surface"
<<
CGoGNendl
;
if
(
!
m_selecteds
.
empty
())
{
myMap
.
splitSurface
(
m_selecteds
);
updateMap
();
m_selected
=
NIL
;
m_selected2
=
NIL
;
m_selecteds
.
clear
();
}
break
;
default:
break
;
...
...
@@ -233,7 +244,15 @@ void MyQT::cb_redraw()
m_render_topo
->
overdrawDart
(
myMap
,
m_selected
,
11
,
1.0
f
,
0.0
f
,
0.0
f
);
if
(
m_selected2
!=
NIL
)
if
(
!
m_selecteds
.
empty
())
{
for
(
std
::
vector
<
Dart
>::
iterator
it
=
m_selecteds
.
begin
()
;
it
!=
m_selecteds
.
end
()
;
++
it
)
m_render_topo
->
overdrawDart
(
myMap
,
*
it
,
11
,
0.0
f
,
0.0
f
,
1.0
f
);
}
m_render_topo
->
overdrawDart
(
myMap
,
m_selected2
,
11
,
0.0
f
,
1.0
f
,
0.0
f
);
}
void
MyQT
::
cb_mousePress
(
int
button
,
int
x
,
int
y
)
...
...
@@ -253,6 +272,17 @@ void MyQT::cb_mousePress(int button, int x, int y)
}
updateGL
();
}
if
(
Control
())
{
Dart
d
=
m_render_topo
->
picking
(
myMap
,
x
,
y
);
// nb
if
(
button
==
Qt
::
LeftButton
)
{
if
(
d
==
Dart
::
nil
())
m_selecteds
.
clear
();
else
m_selecteds
.
push_back
(
d
);
}
}
}
void
MyQT
::
cb_keyPress
(
int
keycode
)
...
...
Apps/Tuto/Modelling/tuto_oper2.h
View file @
7114af20
...
...
@@ -93,6 +93,7 @@ protected:
#endif
Dart
m_selected
;
Dart
m_selected2
;
std
::
vector
<
Dart
>
m_selecteds
;
DartMarker
<
MAP
>
dm
;
float
m_shift
;
...
...
Apps/Tuto/Modelling/tuto_oper2.ui
View file @
7114af20
...
...
@@ -36,7 +36,16 @@
</size>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<property
name=
"margin"
>
<property
name=
"leftMargin"
>
<number>
2
</number>
</property>
<property
name=
"topMargin"
>
<number>
2
</number>
</property>
<property
name=
"rightMargin"
>
<number>
2
</number>
</property>
<property
name=
"bottomMargin"
>
<number>
2
</number>
</property>
<property
name=
"spacing"
>
...
...
@@ -99,6 +108,11 @@
<string>
deleteFace
</string>
</property>
</item>
<item>
<property
name=
"text"
>
<string>
splitSurface
</string>
</property>
</item>
</widget>
</item>
<item>
...
...
Apps/Tuto/Modelling/tuto_oper3.cpp
View file @
7114af20
...
...
@@ -245,6 +245,24 @@ void MyQT::operation(int x)
updateMap
();
}
break
;
case
13
:
CGoGNout
<<
"split volume"
<<
CGoGNendl
;
if
(
!
m_selecteds
.
empty
())
{
myMap
.
splitVolume
(
m_selecteds
);
m_selecteds
.
clear
();
updateMap
();
}
break
;
case
14
:
CGoGNout
<<
"cut volume"
<<
CGoGNendl
;
if
(
!
m_selecteds
.
empty
())
{
myMap
.
cutVolume
(
m_selecteds
);
m_selecteds
.
clear
();
updateMap
();
}
break
;
default:
break
;
}
...
...
@@ -459,12 +477,12 @@ void MyQT::cb_mousePress(int button, int x, int y)
{
if
(
button
==
Qt
::
LeftButton
)
{
Dart
d
=
m_render_topo_boundary
->
picking
(
myMap
,
x
,
y
,
true
);
if
(
d
!=
Dart
::
nil
())
{
Dart
e
=
myMap
.
phi2
(
d
);
std
::
cout
<<
"Dart "
<<
d
.
index
<<
" / phi2:"
<<
e
.
index
<<
std
::
endl
;
}
m_selecteds
.
push_back
(
Dart
(
173
)
);
m_selecteds
.
push_back
(
Dart
(
186
));
m_selecteds
.
push_back
(
Dart
(
185
));
m_selecteds
.
push_back
(
Dart
(
171
)
);
m_selecteds
.
push_back
(
Dart
(
170
))
;
m_selecteds
.
push_back
(
Dart
(
174
));
}
if
(
button
==
Qt
::
RightButton
)
{
...
...
@@ -472,8 +490,6 @@ void MyQT::cb_mousePress(int button, int x, int y)
if
(
d
!=
Dart
::
nil
())
{
m_selecteds
.
push_back
(
d
);
Dart
e
=
myMap
.
phi2
(
d
);
std
::
cout
<<
"Dart "
<<
d
.
index
<<
" / phi2:"
<<
e
.
index
<<
std
::
endl
;
}
}
...
...
@@ -836,7 +852,7 @@ void MyQT::importMesh(std::string& filename)
std
::
cerr
<<
"could not import "
<<
filename
<<
std
::
endl
;
return
;
}
else
else
position
=
myMap
.
getAttribute
<
VEC3
,
VERTEX
,
MAP
>
(
attrNames
[
0
])
;
m_selected
=
NIL
;
...
...
Apps/Tuto/Modelling/tuto_oper3.ui
View file @
7114af20
...
...
@@ -155,6 +155,16 @@
<string>
deleteVolume
</string>
</property>
</item>
<item>
<property
name=
"text"
>
<string>
splitVolume
</string>
</property>
</item>
<item>
<property
name=
"text"
>
<string>
cutVolume
</string>
</property>
</item>
</widget>
</item>
<item
row=
"6"
column=
"0"
>
...
...
CMakeLists.txt
View file @
7114af20
...
...
@@ -135,7 +135,7 @@ SET (CGoGN_EXT_INCLUDES
# define libs for external libs
SET
(
CGoGN_EXT_LIBS
nl
nl
${
OPENGL_LIBRARY
}
${
GLEW_LIBRARIES
}
${
ZLIB_LIBRARIES
}
...
...
SCHNApps/Plugins/CMakeLists.txt
View file @
7114af20
...
...
@@ -15,3 +15,5 @@ ADD_SUBDIRECTORY(surface_distance)
ADD_SUBDIRECTORY
(
volume_import
)
#ADD_SUBDIRECTORY(volume_render)
ADD_SUBDIRECTORY
(
volumetric
)
SCHNApps/include/texture.h
View file @
7114af20
#ifndef _TEXTURE_H_
#define _TEXTURE_H_
#include "Utils/gl_def.h"
#include <QSize>
namespace
CGoGN
{
...
...
SCHNApps/include/types.h
View file @
7114af20
...
...
@@ -39,6 +39,7 @@ class Camera;
class
MapHandlerGen
;
class
CellSelectorGen
;
struct
Texture
;
class
ObjectHandlerGen
;
typedef
QMap
<
QString
,
Plugin
*>
PluginSet
;
typedef
QMap
<
QString
,
View
*>
ViewSet
;
...
...
@@ -51,6 +52,8 @@ typedef QMap<QString, Utils::GLSLShader*> ShaderSet;
typedef
QMap
<
QString
,
Texture
*>
TextureSet
;
typedef
QMap
<
QString
,
ObjectHandlerGen
*>
ObjectSet
;
}
// namespace SCHNApps
}
// namespace CGoGN
...
...
ThirdParty/build/.gitignore
deleted
100644 → 0
View file @
7576a3e9
# all build directory ignored !
*
ThirdParty/buildDebug/.gitignore
deleted
100644 → 0
View file @
7576a3e9
# all build directory ignored !
*
apps_cmake.txt
View file @
7114af20
...
...
@@ -69,6 +69,7 @@ SET (COMMON_LIBS
${LIBXML2_LIBRARIES}
${Boost_SYSTEM_LIBRARY}
${Boost_REGEX_LIBRARY}
tinyxml2
)
IF(WIN32)
...
...
@@ -82,7 +83,6 @@ ELSE(WIN32)
find_package(SuiteSparse REQUIRED)
SET (COMMON_INCLUDES ${COMMON_INCLUDES} ${SUITESPARSE_INCLUDE_DIRS})
SET (COMMON_LIBS ${SUITESPARSE_LIBRARIES} lapack blas ${COMMON_LIBS} pthread )
ENDIF(WIN32)
#optionnal libs
...
...
build/.gitignore
deleted
100644 → 0
View file @
7576a3e9
#ignore all build directory
*
buildDebug/.gitignore
deleted
100644 → 0
View file @
7576a3e9
#ignore all build directory
*
include/Algo/Export/export.hpp
View file @
7114af20
...
...
@@ -998,7 +998,7 @@ bool exportChoupi(typename PFP::MAP& map, const VertexAttribute<typename PFP::VE
return
false
;
}
out
<<
map
.
template
getNbOrbits
<
VERTEX
>
()
<<
" "
<<
map
.
template
getNbOrbits
<
EDGE
>
(
)
<<
std
::
endl
;
out
<<
Algo
::
Topo
::
getNbOrbits
<
VERTEX
>
(
map
)
<<
" "
<<
Algo
::
Topo
::
getNbOrbits
<
EDGE
>
(
map
)
<<
std
::
endl
;
TraversorV
<
MAP
>
travV
(
map
);
for
(
Dart
dit
=
travV
.
begin
()
;
dit
!=
travV
.
end
()
;
dit
=
travV
.
next
())
...
...
include/Algo/Export/exportVol.h
View file @
7114af20
...
...
@@ -125,6 +125,9 @@ template <typename PFP>
bool
exportTetmesh
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
>&
position
,
const
char
*
filename
);
template
<
typename
PFP
>
bool
exportBoundaryOFF
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
>&
position
,
const
char
*
filename
);
}
// namespace Export
}
// namespace Volume
...
...
include/Algo/Export/exportVol.hpp
View file @
7114af20
...
...
@@ -853,6 +853,81 @@ bool exportMesh(typename PFP::MAP& map, const VertexAttribute<typename PFP::VEC3
}
}
template
<
typename
PFP
>
bool
exportBoundaryOFF
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
>&
position
,
const
char
*
filename
)
{
typedef
typename
PFP
::
MAP
MAP
;
typedef
typename
PFP
::
VEC3
VEC3
;
std
::
ofstream
out
(
filename
,
std
::
ios
::
out
)
;
if
(
!
out
.
good
())
{
CGoGNerr
<<
"Unable to open file "
<<
CGoGNendl
;
return
false
;
}
unsigned
int
nbDarts
=
map
.
getNbDarts
()
;
std
::
vector
<
unsigned
int
>
facesSize
;
std
::
vector
<
std
::
vector
<
unsigned
int
>
>
facesIdx
;
facesSize
.
reserve
(
nbDarts
/
3
)
;
facesIdx
.
reserve
(
nbDarts
/
3
)
;
std
::
map
<
unsigned
int
,
unsigned
int
>
vIndex
;
unsigned
int
vCpt
=
0
;
std
::
vector
<
unsigned
int
>
vertices
;
vertices
.
reserve
(
nbDarts
/
6
)
;
CellMarker
<
typename
PFP
::
MAP
,
VERTEX
>
markV
(
map
)
;
TraversorF
<
MAP
>
t
(
map
)
;
for
(
Dart
d
=
t
.
begin
();
d
!=
t
.
end
();
d
=
t
.
next
())
{
if
(
map
.
isBoundaryFace
(
d
))
{
Dart
db
=
d
;
if
(
!
map
.
template
isBoundaryMarked
<
3
>
(
db
))
db
=
map
.
phi3
(
db
);
std
::
vector
<
unsigned
int
>
fidx
;
fidx
.
reserve
(
8
)
;
unsigned
int
degree
=
0
;
Traversor2FV
<
typename
PFP
::
MAP
>
tfv
(
map
,
db
)
;
for
(
Dart
it
=
tfv
.
begin
();
it
!=
tfv
.
end
();
it
=
tfv
.
next
())
{
++
degree
;
unsigned
int
vNum
=
map
.
template
getEmbedding
<
VERTEX
>
(
it
)
;
if
(
!
markV
.
isMarked
(
it
))
{
markV
.
mark
(
it
)
;
vIndex
[
vNum
]
=
vCpt
++
;
vertices
.
push_back
(
vNum
)
;
}
fidx
.
push_back
(
vIndex
[
vNum
])
;
}
facesSize
.
push_back
(
degree
)
;
facesIdx
.
push_back
(
fidx
)
;
}
}
out
<<
"OFF"
<<
std
::
endl
;
out
<<
vertices
.
size
()
<<
" "
<<
facesSize
.
size
()
<<
" "
<<
0
<<
std
::
endl
;
for
(
unsigned
int
i
=
0
;
i
<
vertices
.
size
();
++
i
)
{
const
VEC3
&
v
=
position
[
vertices
[
i
]]
;
out
<<
v
[
0
]
<<
" "
<<
v
[
1
]
<<
" "
<<
v
[
2
]
<<
std
::
endl
;
}
for
(
unsigned
int
i
=
0
;
i
<
facesSize
.
size
();
++
i
)
{
out
<<
facesSize
[
i
]
;
for
(
unsigned
int
j
=
0
;
j
<
facesIdx
[
i
].
size
();
++
j
)
out
<<
" "
<<
facesIdx
[
i
][
j
]
;
out
<<
std
::
endl
;
}
out
.
close
()
;
return
true
;
}
}
// namespace Export
}
// namespace Volume
...
...
include/Algo/ImplicitHierarchicalMesh/ihm3.h
View file @
7114af20
...
...
@@ -44,7 +44,7 @@ template<typename T, unsigned int ORBIT> class AttributeHandler_IHM ;
class
ImplicitHierarchicalMap3
:
public
EmbeddedMap3
{
template
<
typename
T
,
unsigned
int
ORBIT
>
friend
class
AttributeHandler_IHM
;
template
<
typename
T
,
unsigned
int
ORBIT
>
friend
class
AttributeHandler_IHM
;
public:
FunctorType
*
vertexVertexFunctor
;
...
...
@@ -52,92 +52,92 @@ public:
FunctorType
*
faceVertexFunctor
;
FunctorType
*
volumeVertexFunctor
;
unsigned
int
m_curLevel
;
unsigned
int
m_maxLevel
;
unsigned
int
m_edgeIdCount
;
unsigned
int
m_faceIdCount
;
unsigned
int
m_curLevel
;
unsigned
int
m_maxLevel
;
unsigned
int
m_edgeIdCount
;
unsigned
int
m_faceIdCount
;
DartAttribute
<
unsigned
int
,
ImplicitHierarchical
Map3
>
m_dartLevel
;
DartAttribute
<
unsigned
int
,
ImplicitHierarchical
Map3
>
m_edgeId
;
DartAttribute
<
unsigned
int
,
ImplicitHierarchical
Map3
>
m_faceId
;
DartAttribute
<
unsigned
int
,
Embedded
Map3
>
m_dartLevel
;
DartAttribute
<
unsigned
int
,
Embedded
Map3
>
m_edgeId
;
DartAttribute
<
unsigned
int
,
Embedded
Map3
>
m_faceId
;
AttributeMultiVector
<
unsigned
int
>*
m_nextLevelCell
[
NB_ORBITS
]
;
AttributeMultiVector
<
unsigned
int
>*
m_nextLevelCell
[
NB_ORBITS
]
;
// std::vector<Algo::MR::Filter*> synthesisFilters ;
// std::vector<Algo::MR::Filter*> analysisFilters ;
public:
ImplicitHierarchicalMap3
()
;
ImplicitHierarchicalMap3
()
;
~
ImplicitHierarchicalMap3
()
;
~
ImplicitHierarchicalMap3
()
;
static
const
unsigned
int
DIMENSION
=
3
;
static
const
unsigned
int
DIMENSION
=
3
;
//!
/*!
*
*/
void
update_topo_shortcuts
();
//!
/*!
*
*/
void
update_topo_shortcuts
();
//!
/*!
*
*/
void
initImplicitProperties
()
;
//!
/*!
*
*/
void
initImplicitProperties
()
;
/**
* clear the map
* @param remove attrib remove attribute (not only clear the content)
*/
void
clear
(
bool
removeAttrib
);
/**
* clear the map
* @param remove attrib remove attribute (not only clear the content)
*/
void
clear
(
bool
removeAttrib
);
/*! @name Attributes Management
* To handles Attributes for each level of an implicit 3-map
*************************************************************************/
/*! @name Attributes Management
* To handles Attributes for each level of an implicit 3-map
*************************************************************************/
//@{
//!
/*!
*
*/
template
<
typename
T
,
unsigned
int
ORBIT
>
AttributeHandler_IHM
<
T
,
ORBIT
>
addAttribute
(
const
std
::
string
&
nameAttr
)
;
//@{
//!
/*!
*
*/
//
template <typename T, unsigned int ORBIT>
//
AttributeHandler_IHM<T, ORBIT> addAttribute(const std::string& nameAttr) ;
//!
/*!
*
*/
template
<
typename
T
,
unsigned
int
ORBIT
>
AttributeHandler_IHM
<
T
,
ORBIT
>
getAttribute
(
const
std
::
string
&
nameAttr
)
;
//@}
//!
/*!
*
*/
//
template <typename T, unsigned int ORBIT>
//
AttributeHandler_IHM<T, ORBIT> getAttribute(const std::string& nameAttr) ;
//@}
/*! @name Basic Topological Operators
* Redefinition of the basic topological operators
*************************************************************************/
/*! @name Basic Topological Operators
* Redefinition of the basic topological operators
*************************************************************************/
//@{
virtual
Dart
newDart
()
;
//@{
virtual
Dart
newDart
()
;
Dart
phi1
(
Dart
d
)
const
;
Dart
phi1
(
Dart
d
)
const
;
Dart
phi_1
(
Dart
d
)
const
;
Dart
phi_1
(
Dart
d
)
const
;
Dart
phi2
(
Dart
d
)
const
;
Dart
phi2
(
Dart
d
)
const
;
private:
Dart
phi2bis
(
Dart
d
)
const
;
Dart
phi2bis
(
Dart
d
)
const
;
public:
Dart
phi3
(
Dart
d
)
const
;
Dart
phi3
(
Dart
d
)
const
;
Dart
alpha0
(
Dart
d
)
const
;
Dart
alpha0
(
Dart
d
)
const
;
Dart
alpha1
(
Dart
d
)
const
;
Dart
alpha1
(
Dart
d
)
const
;
Dart
alpha2
(
Dart
d
)
const
;
Dart
alpha2
(
Dart
d
)
const
;
Dart
alpha_2
(
Dart
d
)
const
;
//@}
Dart
alpha_2
(
Dart
d
)
const
;
//@}
/*! @name Topological Operators with Cells id management
* Topological operations on Hierarchical Implicit 3-maps
...
...
@@ -195,41 +195,41 @@ public:
* Operations to manage the levels of an Implicit Hierarchical 3-map
*************************************************************************/
void
incCurrentLevel
();
void
decCurrentLevel
();
//@{
//!
/*!
*
*/
unsigned
int
getCurrentLevel
()
const
;
//!
/*!
*
*/
void
setCurrentLevel
(
unsigned
int
l
)
;
//!
/*!
*
*/
unsigned
int
getMaxLevel
()
const
;
//!
/*!
*
*/
unsigned
int
getDartLevel
(
Dart
d
)
const
;
//!
/*!
*
*/
void
setDartLevel
(
Dart
d
,
unsigned
int
i
)
;
void
incCurrentLevel
();
void
decCurrentLevel
();
//@{
//!
/*!
*
*/
unsigned
int
getCurrentLevel
()
const
;
//!
/*!
*
*/
void
setCurrentLevel
(
unsigned
int
l
)
;
//!
/*!
*
*/
unsigned
int
getMaxLevel
()
const
;
//!
/*!
*
*/
unsigned
int
getDartLevel
(
Dart
d
)
const
;
//!
/*!
*
*/
void
setDartLevel
(
Dart
d
,
unsigned
int
i
)
;
//@}
/*! @name Id Management
...
...
@@ -237,47 +237,47 @@ public:
*************************************************************************/
//@{