Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Thomas Pitiot
CGoGN
Commits
28b02542
Commit
28b02542
authored
Mar 13, 2014
by
Pierre Kraemer
Browse files
update filtering algos
parent
a5aeb607
Changes
19
Hide whitespace changes
Inline
Side-by-side
Apps/Examples/Debug/CMakeLists.txt
View file @
28b02542
...
...
@@ -63,19 +63,17 @@ target_link_libraries( clippingD ${CGoGN_LIBS_D} ${CGoGN_EXT_LIBS} )
QT4_WRAP_UI
(
volumeExplorer_ui ../volumeExplorer.ui
)
QT4_WRAP_CPP
(
volumeExplorer_moc ../volumeExplorer.h
)
add_executable
(
volumeExplorerD ../volumeExplorer.cpp
${
volumeExplorer_ui
}
${
volumeExplorer_moc
}
)
target_link_libraries
(
volumeExplorerD
${
CGoGN_LIBS_D
}
${
CGoGN_EXT_LIBS
}
)
target_link_libraries
(
volumeExplorerD
${
CGoGN_LIBS_D
}
${
CGoGN_EXT_LIBS
}
)
#QT4_WRAP_UI( mcmesh_ui ../mcmesh.ui )
#QT4_WRAP_CPP( mcmesh_moc ../mcmesh.h )
#add_executable( mcmeshD ../mcmesh.cpp ${mcmesh_moc} ${mcmesh_ui} )
#target_link_libraries( mcmeshD ${CGoGN_LIBS_D} ${CGoGN_EXT_LIBS})
#target_link_libraries( mcmeshD ${CGoGN_LIBS_D} ${CGoGN_EXT_LIBS}
)
QT4_WRAP_CPP
(
concave_rendering_moc ../concave_rendering.h
)
add_executable
(
concave_renderingD ../concave_rendering.cpp
${
concave_rendering_moc
}
${
concave_rendering_ui
}
)
target_link_libraries
(
concave_renderingD
${
CGoGN_LIBS_D
}
${
CGoGN_EXT_LIBS
}
)
target_link_libraries
(
concave_renderingD
${
CGoGN_LIBS_D
}
${
CGoGN_EXT_LIBS
}
)
QT4_WRAP_CPP
(
viewerOBJ_moc ../viewerOBJ.h
)
add_executable
(
viewerOBJD ../viewerOBJ.cpp
${
viewerOBJ_moc
}
)
target_link_libraries
(
viewerOBJD
${
CGoGN_LIBS_R
}
${
CGoGN_EXT_LIBS
}
)
target_link_libraries
(
viewerOBJD
${
CGoGN_LIBS_R
}
${
CGoGN_EXT_LIBS
}
)
Apps/Examples/Release/CMakeLists.txt
View file @
28b02542
...
...
@@ -73,5 +73,4 @@ target_link_libraries( concave_rendering ${CGoGN_LIBS_R} ${CGoGN_EXT_LIBS} )
QT4_WRAP_CPP
(
viewerOBJ_moc ../viewerOBJ.h
)
add_executable
(
viewerOBJ ../viewerOBJ.cpp
${
viewerOBJ_moc
}
)
target_link_libraries
(
viewerOBJ
${
CGoGN_LIBS_R
}
${
CGoGN_EXT_LIBS
}
)
target_link_libraries
(
viewerOBJ
${
CGoGN_LIBS_R
}
${
CGoGN_EXT_LIBS
}
)
Apps/Examples/mcmesh.cpp
View file @
28b02542
...
...
@@ -197,7 +197,6 @@ void MCMesh::sphere()
myImg
=
new
SAlgo
::
MC
::
Image
<
DATATYPE
>
(
img
,
128
,
128
,
128
,
1.0
f
,
1.0
f
,
1.0
f
,
false
);
}
/**********************************************************************************************
* MAIN FUNCTION *
**********************************************************************************************/
...
...
@@ -210,7 +209,7 @@ int main(int argc, char **argv)
sqt
.
setGeometry
(
0
,
0
,
1000
,
800
);
sqt
.
show
();
sqt
.
valLabel
=
DATATYPE
(
0
);
sqt
.
valLabel
=
DATATYPE
(
0
);
if
(
argc
==
2
)
{
...
...
Apps/Examples/mcmesh.h
View file @
28b02542
...
...
@@ -31,6 +31,8 @@
#include
"Topology/generic/parameters.h"
#include
"Topology/map/embeddedMap2.h"
#include
"Algo/MC/marchingcube.h"
#include
"Geometry/vector_gen.h"
#include
"Geometry/matrix.h"
...
...
@@ -40,8 +42,6 @@
#include
"Utils/vbo.h"
#include
"Algo/Geometry/boundingbox.h"
#include
"Algo/MC/marchingcube.h"
using
namespace
CGoGN
;
...
...
SCHNApps/include/mapHandler.h
View file @
28b02542
...
...
@@ -9,7 +9,6 @@
#include
"cellSelector.h"
#include
"Topology/generic/genericmap.h"
#include
"Topology/generic/attribmap.h"
#include
"Topology/generic/functor.h"
#include
"Topology/generic/attributeHandler.h"
...
...
include/Algo/Filtering/average.h
View file @
28b02542
...
...
@@ -43,11 +43,11 @@ enum neighborhood { INSIDE = 1, BORDER = 2 };
template
<
typename
PFP
,
typename
T
>
void
filterAverageAttribute_OneRing
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
T
>&
attIn
,
VertexAttribute
<
T
>&
attOut
,
const
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attIn
,
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attOut
,
int
neigh
)
{
FunctorAverage
<
T
,
VERTEX
>
fa
(
attIn
)
;
FunctorAverage
<
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>
>
fa
(
attIn
)
;
Algo
::
Surface
::
Selection
::
Collector_OneRing
<
PFP
>
col
(
map
)
;
TraversorV
<
typename
PFP
::
MAP
>
t
(
map
)
;
...
...
@@ -88,13 +88,13 @@ void filterAverageAttribute_OneRing(
template
<
typename
PFP
,
typename
T
>
void
filterAverageVertexAttribute_WithinSphere
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
T
>&
attIn
,
VertexAttribute
<
T
>&
attOut
,
const
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attIn
,
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attOut
,
int
neigh
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
typename
PFP
::
REAL
radius
)
{
FunctorAverage
<
T
,
VERTEX
>
faInside
(
attIn
)
;
FunctorAverage
<
VertexAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>
>
faInside
(
attIn
)
;
FunctorAverageOnSphereBorder
<
PFP
,
T
>
faBorder
(
map
,
attIn
,
position
)
;
Algo
::
Surface
::
Selection
::
Collector_WithinSphere
<
PFP
>
col
(
map
,
position
,
radius
)
;
...
...
@@ -129,13 +129,13 @@ void filterAverageVertexAttribute_WithinSphere(
template
<
typename
PFP
,
typename
T
>
void
filterAverageEdgeAttribute_WithinSphere
(
typename
PFP
::
MAP
&
map
,
const
EdgeAttribute
<
T
>&
attIn
,
EdgeAttribute
<
T
>&
attOut
,
const
EdgeAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attIn
,
EdgeAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attOut
,
int
neigh
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
typename
PFP
::
REAL
radius
)
{
FunctorAverage
<
T
,
EDGE
>
fa
(
attIn
)
;
FunctorAverage
<
EdgeAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>
>
fa
(
attIn
)
;
Algo
::
Surface
::
Selection
::
Collector_WithinSphere
<
PFP
>
col
(
map
,
position
,
radius
)
;
TraversorE
<
typename
PFP
::
MAP
>
t
(
map
)
;
...
...
@@ -156,13 +156,13 @@ void filterAverageEdgeAttribute_WithinSphere(
template
<
typename
PFP
,
typename
T
>
void
filterAverageFaceAttribute_WithinSphere
(
typename
PFP
::
MAP
&
map
,
const
FaceAttribute
<
T
>&
attIn
,
FaceAttribute
<
T
>&
attOut
,
const
FaceAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attIn
,
FaceAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>&
attOut
,
int
neigh
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
typename
PFP
::
REAL
radius
)
{
FunctorAverage
<
T
,
FACE
>
fa
(
attIn
)
;
FunctorAverage
<
FaceAttribute
<
T
,
typename
PFP
::
MAP
::
IMPL
>
>
fa
(
attIn
)
;
Algo
::
Surface
::
Selection
::
Collector_WithinSphere
<
PFP
>
col
(
map
,
position
,
radius
)
;
TraversorF
<
typename
PFP
::
MAP
>
t
(
map
)
;
...
...
@@ -182,7 +182,7 @@ void filterAverageFaceAttribute_WithinSphere(
}
// namespace Filtering
}
}
// namespace Surface
}
// namespace Algo
...
...
include/Algo/Filtering/average_normals.h
View file @
28b02542
...
...
@@ -44,12 +44,12 @@ namespace Filtering
template
<
typename
PFP
>
void
computeNewPositionsFromFaceNormals
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
const
FaceAttribute
<
typename
PFP
::
REAL
>&
faceArea
,
const
FaceAttribute
<
typename
PFP
::
VEC3
>&
faceCentroid
,
const
FaceAttribute
<
typename
PFP
::
VEC3
>&
faceNormal
,
const
FaceAttribute
<
typename
PFP
::
VEC3
>&
faceNewNormal
)
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
const
FaceAttribute
<
typename
PFP
::
REAL
,
typename
PFP
::
MAP
::
IMPL
>&
faceArea
,
const
FaceAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
faceCentroid
,
const
FaceAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
faceNormal
,
const
FaceAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
faceNewNormal
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
typedef
typename
PFP
::
REAL
REAL
;
...
...
@@ -77,20 +77,21 @@ void computeNewPositionsFromFaceNormals(
}
template
<
typename
PFP
>
void
filterAverageNormals
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
filterAverageNormals
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
typedef
typename
PFP
::
REAL
REAL
;
FaceAutoAttribute
<
REAL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
>
faceCentroid
(
map
,
"faceCentroid"
)
;
FaceAutoAttribute
<
REAL
,
MAP_IMPL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceCentroid
(
map
,
"faceCentroid"
)
;
Algo
::
Surface
::
Geometry
::
computeAreaFaces
<
PFP
>
(
map
,
position
,
faceArea
)
;
Algo
::
Surface
::
Geometry
::
computeNormalFaces
<
PFP
>
(
map
,
position
,
faceNormal
)
;
Algo
::
Surface
::
Geometry
::
computeCentroidFaces
<
PFP
>
(
map
,
position
,
faceCentroid
)
;
FaceAutoAttribute
<
VEC3
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
// Compute new normals
TraversorF
<
typename
PFP
::
MAP
>
tf
(
map
)
;
...
...
@@ -120,20 +121,21 @@ void filterAverageNormals(typename PFP::MAP& map, const VertexAttribute<typename
}
template
<
typename
PFP
>
void
filterMMSE
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
filterMMSE
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
typedef
typename
PFP
::
REAL
REAL
;
FaceAutoAttribute
<
REAL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
>
faceCentroid
(
map
,
"faceCentroid"
)
;
FaceAutoAttribute
<
REAL
,
MAP_IMPL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceCentroid
(
map
,
"faceCentroid"
)
;
Algo
::
Surface
::
Geometry
::
computeAreaFaces
<
PFP
>
(
map
,
position
,
faceArea
)
;
Algo
::
Surface
::
Geometry
::
computeNormalFaces
<
PFP
>
(
map
,
position
,
faceNormal
)
;
Algo
::
Surface
::
Geometry
::
computeCentroidFaces
<
PFP
>
(
map
,
position
,
faceCentroid
)
;
FaceAutoAttribute
<
VEC3
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
// Compute new normals
TraversorF
<
typename
PFP
::
MAP
>
tf
(
map
)
;
...
...
@@ -204,20 +206,21 @@ void filterMMSE(typename PFP::MAP& map, float sigmaN2, const VertexAttribute<typ
}
template
<
typename
PFP
>
void
filterTNBA
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
filterTNBA
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
typedef
typename
PFP
::
REAL
REAL
;
FaceAutoAttribute
<
REAL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
>
faceCentroid
(
map
,
"faceCentroid"
)
;
FaceAutoAttribute
<
REAL
,
MAP_IMPL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceCentroid
(
map
,
"faceCentroid"
)
;
Algo
::
Surface
::
Geometry
::
computeAreaFaces
<
PFP
>
(
map
,
position
,
faceArea
)
;
Algo
::
Surface
::
Geometry
::
computeNormalFaces
<
PFP
>
(
map
,
position
,
faceNormal
)
;
Algo
::
Surface
::
Geometry
::
computeCentroidFaces
<
PFP
>
(
map
,
position
,
faceCentroid
)
;
FaceAutoAttribute
<
VEC3
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
// Compute new normals
long
nbTot
=
0
;
...
...
@@ -322,22 +325,23 @@ void filterTNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con
}
template
<
typename
PFP
>
void
filterVNBA
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
normal
)
void
filterVNBA
(
typename
PFP
::
MAP
&
map
,
float
sigmaN2
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
normal
)
{
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
typedef
typename
PFP
::
REAL
REAL
;
FaceAutoAttribute
<
REAL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
>
faceCentroid
(
map
,
"faceCentroid"
)
;
FaceAutoAttribute
<
REAL
,
MAP_IMPL
>
faceArea
(
map
,
"faceArea"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNormal
(
map
,
"faceNormal"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceCentroid
(
map
,
"faceCentroid"
)
;
Algo
::
Surface
::
Geometry
::
computeAreaFaces
<
PFP
>
(
map
,
position
,
faceArea
)
;
Algo
::
Surface
::
Geometry
::
computeNormalFaces
<
PFP
>
(
map
,
position
,
faceNormal
)
;
Algo
::
Surface
::
Geometry
::
computeCentroidFaces
<
PFP
>
(
map
,
position
,
faceCentroid
)
;
VertexAutoAttribute
<
REAL
>
vertexArea
(
map
,
"vertexArea"
)
;
FaceAutoAttribute
<
VEC3
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
VertexAutoAttribute
<
VEC3
>
vertexNewNormal
(
map
,
"vertexNewNormal"
)
;
VertexAutoAttribute
<
REAL
,
MAP_IMPL
>
vertexArea
(
map
,
"vertexArea"
)
;
FaceAutoAttribute
<
VEC3
,
MAP_IMPL
>
faceNewNormal
(
map
,
"faceNewNormal"
)
;
VertexAutoAttribute
<
VEC3
,
MAP_IMPL
>
vertexNewNormal
(
map
,
"vertexNewNormal"
)
;
long
nbTot
=
0
;
long
nbAdapt
=
0
;
...
...
@@ -458,10 +462,10 @@ void filterVNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con
// CGoGNout <<" adaptive rate = "<< float(nbAdapt)/float(nbTot)<<CGoGNendl;
}
}
//namespace Filtering
}
//
namespace Filtering
}
}
// namespace Surface
}
//namespace Algo
}
//
namespace Algo
}
//namespace CGoGN
}
//
namespace CGoGN
include/Algo/Filtering/bilateral.h
View file @
28b02542
...
...
@@ -38,7 +38,7 @@ namespace Filtering
{
template
<
typename
PFP
>
void
sigmaBilateral
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
normal
,
float
&
sigmaC
,
float
&
sigmaS
)
void
sigmaBilateral
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
normal
,
float
&
sigmaC
,
float
&
sigmaS
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -60,7 +60,7 @@ void sigmaBilateral(typename PFP::MAP& map, const VertexAttribute<typename PFP::
}
template
<
typename
PFP
>
void
filterBilateral
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
normal
)
void
filterBilateral
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
normal
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -96,7 +96,7 @@ void filterBilateral(typename PFP::MAP& map, const VertexAttribute<typename PFP:
}
template
<
typename
PFP
>
void
filterSUSAN
(
typename
PFP
::
MAP
&
map
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
normal
)
void
filterSUSAN
(
typename
PFP
::
MAP
&
map
,
float
SUSANthreshold
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
normal
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
include/Algo/Filtering/functors.h
View file @
28b02542
...
...
@@ -40,16 +40,18 @@ namespace Surface
namespace
Filtering
{
template
<
typename
T
,
unsigned
int
ORBIT
>
template
<
typename
ATTR_TYPE
>
class
FunctorAverage
:
public
virtual
FunctorType
{
typedef
typename
ATTR_TYPE
::
DATA_TYPE
T
;
protected:
const
A
ttributeHandler
<
T
,
ORBIT
>
&
attr
;
const
A
TTR_TYPE
&
attr
;
T
sum
;
unsigned
int
count
;
public:
FunctorAverage
(
const
A
ttributeHandler
<
T
,
ORBIT
>
&
a
)
:
FunctorType
(),
attr
(
a
),
sum
(
0
),
count
(
0
)
FunctorAverage
(
const
A
TTR_TYPE
&
a
)
:
FunctorType
(),
attr
(
a
),
sum
(
0
),
count
(
0
)
{}
bool
operator
()(
Dart
d
)
{
...
...
@@ -66,18 +68,19 @@ public:
template
<
typename
PFP
,
typename
T
>
class
FunctorAverageOnSphereBorder
:
public
FunctorMap
<
typename
PFP
::
MAP
>
{
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
protected:
const
VertexAttribute
<
T
>&
attr
;
const
VertexAttribute
<
VEC3
>&
position
;
const
VertexAttribute
<
T
,
MAP_IMPL
>&
attr
;
const
VertexAttribute
<
VEC3
,
MAP_IMPL
>&
position
;
VEC3
center
;
typename
PFP
::
REAL
radius
;
T
sum
;
unsigned
int
count
;
public:
FunctorAverageOnSphereBorder
(
typename
PFP
::
MAP
&
map
,
const
Attribute
Handler
<
T
,
VERTEX
>&
a
,
const
VertexAttribute
<
VEC3
>&
p
)
:
FunctorAverageOnSphereBorder
(
typename
PFP
::
MAP
&
map
,
const
Vertex
Attribute
<
T
,
MAP_IMPL
>&
a
,
const
VertexAttribute
<
VEC3
,
MAP_IMPL
>&
p
)
:
FunctorMap
<
typename
PFP
::
MAP
>
(
map
),
attr
(
a
),
position
(
p
),
sum
(
0
),
count
(
0
)
{
center
=
VEC3
(
0
);
...
...
@@ -99,7 +102,7 @@ public:
}
// namespace Filtering
}
}
// namespace Surface
}
// namespace Algo
...
...
include/Algo/Filtering/taubin.h
View file @
28b02542
...
...
@@ -38,8 +38,10 @@ namespace Filtering
{
template
<
typename
PFP
>
void
filterTaubin
(
typename
PFP
::
MAP
&
map
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
filterTaubin
(
typename
PFP
::
MAP
&
map
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
MAP
MAP
;
typedef
typename
PFP
::
MAP
::
IMPL
MAP_IMPL
;
typedef
typename
PFP
::
VEC3
VEC3
;
Algo
::
Surface
::
Selection
::
Collector_OneRing
<
PFP
>
c
(
map
)
;
...
...
@@ -47,9 +49,9 @@ void filterTaubin(typename PFP::MAP& map, VertexAttribute<typename PFP::VEC3>& p
const
float
lambda
=
0.6307
;
const
float
mu
=
-
0.6732
;
CellMarkerNoUnmark
<
VERTEX
>
mv
(
map
)
;
CellMarkerNoUnmark
<
MAP
,
VERTEX
>
mv
(
map
)
;
FunctorAverage
<
V
EC3
,
VERTEX
>
fa1
(
position
)
;
FunctorAverage
<
V
ertexAttribute
<
VEC3
,
MAP_IMPL
>
>
fa1
(
position
)
;
for
(
Dart
d
=
map
.
begin
();
d
!=
map
.
end
();
map
.
next
(
d
))
{
if
(
!
mv
.
isMarked
(
d
))
...
...
@@ -72,7 +74,7 @@ void filterTaubin(typename PFP::MAP& map, VertexAttribute<typename PFP::VEC3>& p
}
// unshrinking step
FunctorAverage
<
V
EC3
,
VERTEX
>
fa2
(
position2
)
;
FunctorAverage
<
V
ertexAttribute
<
VEC3
,
MAP_IMPL
>
>
fa2
(
position2
)
;
for
(
Dart
d
=
map
.
begin
();
d
!=
map
.
end
();
map
.
next
(
d
))
{
if
(
mv
.
isMarked
(
d
))
...
...
@@ -99,14 +101,15 @@ void filterTaubin(typename PFP::MAP& map, VertexAttribute<typename PFP::VEC3>& p
* Taubin filter modified as proposed by [Lav09]
*/
template
<
typename
PFP
>
void
filterTaubin_modified
(
typename
PFP
::
MAP
&
map
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
typename
PFP
::
REAL
radius
)
void
filterTaubin_modified
(
typename
PFP
::
MAP
&
map
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
typename
PFP
::
REAL
radius
)
{
typedef
typename
PFP
::
MAP
MAP
;
typedef
typename
PFP
::
VEC3
VEC3
;
const
float
lambda
=
0.6307
;
const
float
mu
=
-
0.6732
;
CellMarkerNoUnmark
<
VERTEX
>
mv
(
map
)
;
CellMarkerNoUnmark
<
MAP
,
VERTEX
>
mv
(
map
)
;
FunctorAverageOnSphereBorder
<
PFP
,
VEC3
>
fa1
(
map
,
position
,
position
)
;
Algo
::
Surface
::
Selection
::
Collector_WithinSphere
<
PFP
>
c1
(
map
,
position
,
radius
)
;
...
...
@@ -158,7 +161,7 @@ void filterTaubin_modified(typename PFP::MAP& map, VertexAttribute<typename PFP:
}
// namespace Filtering
}
}
// namespace Surface
}
// namespace Algo
...
...
include/Algo/Filtering/tools.h
View file @
28b02542
...
...
@@ -41,7 +41,7 @@ namespace Filtering
{
template
<
typename
PFP
>
float
computeHaussdorf
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
originalPosition
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
float
computeHaussdorf
(
typename
PFP
::
MAP
&
map
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
originalPosition
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -88,7 +88,7 @@ float computeHaussdorf(typename PFP::MAP& map, const VertexAttribute<typename PF
}
template
<
typename
PFP
>
void
computeNoise
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
normal
)
void
computeNoise
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
normal
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -135,7 +135,7 @@ void computeNoise(typename PFP::MAP& map, long amount, const VertexAttribute<typ
//Uniform-distributed additive noise
//TODO do not touch to boundary vertices
template
<
typename
PFP
>
void
computeUnfirmAdditiveNoise
(
typename
PFP
::
MAP
&
map
,
float
noiseIntensity
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
computeUnfirmAdditiveNoise
(
typename
PFP
::
MAP
&
map
,
float
noiseIntensity
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -182,7 +182,7 @@ void computeUnfirmAdditiveNoise(typename PFP::MAP& map, float noiseIntensity, co
//Gaussian-distributed additive noise
//TODO do not touch to boundary vertices
template
<
typename
PFP
>
void
computeGaussianAdditiveNoise
(
typename
PFP
::
MAP
&
map
,
float
noiseIntensity
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
computeGaussianAdditiveNoise
(
typename
PFP
::
MAP
&
map
,
float
noiseIntensity
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -252,7 +252,7 @@ namespace Filtering
{
template
<
typename
PFP
>
void
computeNoise
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
computeNoise
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
@@ -329,7 +329,7 @@ void computeNoise(typename PFP::MAP& map, long amount, const VertexAttribute<typ
template
<
typename
PFP
>
void
computeNoiseGaussian
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position2
)
void
computeNoiseGaussian
(
typename
PFP
::
MAP
&
map
,
long
amount
,
const
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position
,
VertexAttribute
<
typename
PFP
::
VEC3
,
typename
PFP
::
MAP
::
IMPL
>&
position2
)
{
typedef
typename
PFP
::
VEC3
VEC3
;
...
...
include/Container/containerBrowser.hpp
View file @
28b02542
...
...
@@ -23,7 +23,6 @@
*******************************************************************************/
#include
"Topology/generic/dart.h"
#include
"Topology/generic/attribmap.h"
namespace
CGoGN
{
...
...
include/Topology/generic/attribmap.h
deleted
100644 → 0
View file @
a5aeb607
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2012, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.unistra.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#ifndef __ATTRIB_MAP__
#define __ATTRIB_MAP__
#include
"Topology/generic/genericmap.h"
#include
"Topology/generic/attributeHandler.h"
namespace
CGoGN
{
class
AttribMap
:
public
GenericMap
{
private:
void
init
()
;
public:
static
const
unsigned
int
UNKNOWN_ATTRIB
=
AttributeContainer
::
UNKNOWN
;
AttribMap
()
;
virtual
void
clear
(
bool
removeAttrib
)
;
}
;
}
// namespace CGoGN
#include
"Topology/generic/attribmap.hpp"
#endif
include/Topology/generic/attribmap.hpp
deleted
100644 → 0
View file @
a5aeb607
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2012, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *