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
CGoGN
CGoGN
Commits
b3abfc41
Commit
b3abfc41
authored
May 02, 2012
by
Sylvain Thery
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of cgogn:~kraemer/CGoGN_template
parents
480085e4
35e4aa3e
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
153 additions
and
47 deletions
+153
-47
Apps/Examples/viewer.cpp
Apps/Examples/viewer.cpp
+2
-0
include/Algo/Decimation/simplifMesh.h
include/Algo/Decimation/simplifMesh.h
+0
-1
include/Algo/Geometry/stats.h
include/Algo/Geometry/stats.h
+1
-1
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
+3
-3
include/Topology/generic/genericmap.h
include/Topology/generic/genericmap.h
+22
-0
include/Topology/generic/genericmap.hpp
include/Topology/generic/genericmap.hpp
+48
-0
include/Topology/generic/traversorCell.h
include/Topology/generic/traversorCell.h
+6
-0
include/Topology/generic/traversorCell.hpp
include/Topology/generic/traversorCell.hpp
+70
-42
src/Topology/generic/genericmap.cpp
src/Topology/generic/genericmap.cpp
+1
-0
No files found.
Apps/Examples/viewer.cpp
View file @
b3abfc41
...
...
@@ -214,6 +214,8 @@ void Viewer::importMesh(std::string& filename)
position
=
myMap
.
getAttribute
<
PFP
::
VEC3
,
VERTEX
>
(
attrNames
[
0
])
;
}
myMap
.
enableQuickTraversal
<
VERTEX
>
()
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
allDarts
,
Algo
::
Render
::
GL2
::
POINTS
)
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
allDarts
,
Algo
::
Render
::
GL2
::
LINES
)
;
m_render
->
initPrimitives
<
PFP
>
(
myMap
,
allDarts
,
Algo
::
Render
::
GL2
::
TRIANGLES
)
;
...
...
include/Algo/Decimation/simplifMesh.h
View file @
b3abfc41
...
...
@@ -36,7 +36,6 @@ namespace Algo
namespace
Decimation
{
/**
* Example of Edge_Critera class parameter
* Will be used as edge embedding
...
...
include/Algo/Geometry/stats.h
View file @
b3abfc41
...
...
@@ -40,7 +40,7 @@ void statModele(typename PFP::MAP& map, const typename PFP::TVEC3& position)
int
nbFaces
=
0
;
int
nbVertex
=
0
;
CellMarker
mVertex
(
map
,
VERTEX
);
CellMarker
<
VERTEX
>
mVertex
(
map
);
float
ratioMinMax
=
0
;
int
nbEdgePerVertex
=
0
;
...
...
include/Algo/ImplicitHierarchicalMesh/subdivision3.hpp
View file @
b3abfc41
...
...
@@ -729,7 +729,7 @@ Dart subdivideVolume(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& positi
*/
DartMarkerStore
mf
(
map
);
// Lock a face marker to save one dart per face
CellMarker
mv
(
map
,
VERTEX
);
CellMarker
<
VERTEX
>
mv
(
map
);
typename
PFP
::
VEC3
volCenter
;
unsigned
count
=
0
;
...
...
@@ -1102,7 +1102,7 @@ Dart subdivideVolumeGen(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& pos
*/
DartMarkerStore
mf
(
map
);
// Lock a face marker to save one dart per face
CellMarker
mv
(
map
,
VERTEX
);
CellMarker
<
VERTEX
>
mv
(
map
);
typename
PFP
::
VEC3
volCenter
;
unsigned
count
=
0
;
...
...
@@ -1344,7 +1344,7 @@ Dart subdivideVolumeGen(typename PFP::MAP& map, Dart d, typename PFP::TVEC3& pos
//std::cout << "1ere etape finished" << std::endl;
CellMarker
mtf
(
map
,
FACE
);
CellMarker
<
FACE
>
mtf
(
map
);
//Etape 2
for
(
std
::
vector
<
std
::
pair
<
Dart
,
Dart
>
>::
iterator
edges
=
subdividedfacesT
.
begin
();
edges
!=
subdividedfacesT
.
end
();
++
edges
)
...
...
include/Topology/generic/genericmap.h
View file @
b3abfc41
...
...
@@ -85,6 +85,12 @@ protected:
*/
AttributeMultiVector
<
unsigned
int
>*
m_embeddings
[
NB_ORBITS
]
;
/**
* Direct access to quick traversal attributes
* (initialized by enableQuickTraversal function)
*/
AttributeMultiVector
<
Dart
>*
m_quickTraversal
[
NB_ORBITS
]
;
/**
* Marks manager
*/
...
...
@@ -370,6 +376,22 @@ public:
template
<
unsigned
int
ORBIT
>
void
initCell
(
unsigned
int
i
)
;
/****************************************
* QUICK TRAVERSAL MANAGEMENT *
****************************************/
template
<
unsigned
int
ORBIT
>
void
enableQuickTraversal
()
;
template
<
unsigned
int
ORBIT
>
void
updateQuickTraversal
()
;
template
<
unsigned
int
ORBIT
>
AttributeMultiVector
<
Dart
>*
getQuickTraversal
()
;
template
<
unsigned
int
ORBIT
>
void
disableQuickTraversal
()
;
/****************************************
* ATTRIBUTES MANAGEMENT *
****************************************/
...
...
include/Topology/generic/genericmap.hpp
View file @
b3abfc41
...
...
@@ -352,6 +352,54 @@ inline void GenericMap::initCell(unsigned int i)
m_attribs
[
ORBIT
].
initLine
(
i
)
;
}
/****************************************
* QUICK TRAVERSAL MANAGEMENT *
****************************************/
template
<
unsigned
int
ORBIT
>
inline
void
GenericMap
::
enableQuickTraversal
()
{
if
(
m_quickTraversal
[
ORBIT
]
==
NULL
)
{
if
(
!
isOrbitEmbedded
<
ORBIT
>
())
addEmbedding
<
ORBIT
>
()
;
m_quickTraversal
[
ORBIT
]
=
m_attribs
[
ORBIT
].
addAttribute
<
Dart
>
(
"quick_traversal"
)
;
}
updateQuickTraversal
<
ORBIT
>
()
;
}
template
<
unsigned
int
ORBIT
>
inline
void
GenericMap
::
updateQuickTraversal
()
{
assert
(
m_quickTraversal
[
ORBIT
]
!=
NULL
||
!
"updateQuickTraversal on a disabled orbit"
)
;
CellMarker
<
ORBIT
>
cm
(
*
this
)
;
for
(
Dart
d
=
begin
();
d
!=
end
();
next
(
d
))
{
if
(
!
cm
.
isMarked
(
d
))
{
cm
.
mark
(
d
)
;
(
*
m_quickTraversal
[
ORBIT
])[
getEmbedding
<
ORBIT
>
(
d
)]
=
d
;
}
}
}
template
<
unsigned
int
ORBIT
>
inline
AttributeMultiVector
<
Dart
>*
GenericMap
::
getQuickTraversal
()
{
return
m_quickTraversal
[
ORBIT
]
;
}
template
<
unsigned
int
ORBIT
>
inline
void
GenericMap
::
disableQuickTraversal
()
{
if
(
m_quickTraversal
[
ORBIT
]
!=
NULL
)
{
m_attribs
[
ORBIT
].
removeAttribute
<
Dart
>
(
m_quickTraversal
[
ORBIT
]
->
getIndex
())
;
m_quickTraversal
[
ORBIT
]
=
NULL
;
}
}
/****************************************
* ATTRIBUTES MANAGEMENT *
****************************************/
...
...
include/Topology/generic/traversorCell.h
View file @
b3abfc41
...
...
@@ -38,8 +38,14 @@ class TraversorCell: public Traversor<MAP>
{
private:
MAP
&
m
;
AttributeContainer
*
cont
;
unsigned
int
qCurrent
;
DartMarker
*
dmark
;
CellMarker
<
ORBIT
>*
cmark
;
AttributeMultiVector
<
Dart
>*
quickTraversal
;
Dart
current
;
bool
firstTraversal
;
const
FunctorSelect
&
m_good
;
...
...
include/Topology/generic/traversorCell.hpp
View file @
b3abfc41
...
...
@@ -29,47 +29,67 @@ template <typename MAP, unsigned int ORBIT>
TraversorCell
<
MAP
,
ORBIT
>::
TraversorCell
(
MAP
&
map
,
const
FunctorSelect
&
good
,
bool
forceDartMarker
,
unsigned
int
thread
)
:
m
(
map
),
dmark
(
NULL
),
cmark
(
NULL
),
current
(
NIL
),
firstTraversal
(
true
),
m_good
(
good
)
{
if
(
!
forceDartMarker
&&
map
.
template
isOrbitEmbedded
<
ORBIT
>())
cmark
=
new
CellMarker
<
ORBIT
>
(
map
,
thread
)
;
quickTraversal
=
map
.
template
getQuickTraversal
<
ORBIT
>()
;
if
(
quickTraversal
!=
NULL
)
{
cont
=
&
(
m
.
template
getAttributeContainer
<
ORBIT
>())
;
}
else
dmark
=
new
DartMarker
(
map
,
thread
)
;
{
if
(
!
forceDartMarker
&&
map
.
template
isOrbitEmbedded
<
ORBIT
>())
cmark
=
new
CellMarker
<
ORBIT
>
(
map
,
thread
)
;
else
dmark
=
new
DartMarker
(
map
,
thread
)
;
}
}
template
<
typename
MAP
,
unsigned
int
ORBIT
>
TraversorCell
<
MAP
,
ORBIT
>::~
TraversorCell
()
{
if
(
dmark
)
delete
dmark
;
else
delete
cmark
;
if
(
quickTraversal
==
NULL
)
{
if
(
dmark
)
delete
dmark
;
else
delete
cmark
;
}
}
template
<
typename
MAP
,
unsigned
int
ORBIT
>
Dart
TraversorCell
<
MAP
,
ORBIT
>::
begin
()
{
if
(
!
first
Traversal
)
if
(
quick
Traversal
!=
NULL
)
{
if
(
dmark
)
dmark
->
unmarkAll
()
;
else
cmark
->
unmarkAll
()
;
qCurrent
=
cont
->
begin
()
;
current
=
(
*
quickTraversal
)[
qCurrent
]
;
}
current
=
m
.
begin
()
;
while
(
current
!=
m
.
end
()
&&
(
m
.
isBoundaryMarked
(
current
)
||
!
m_good
(
current
)))
m
.
next
(
current
)
;
if
(
current
==
m
.
end
())
current
=
NIL
;
else
{
if
(
dmark
)
dmark
->
markOrbit
<
ORBIT
>
(
current
)
;
if
(
!
firstTraversal
)
{
if
(
dmark
)
dmark
->
unmarkAll
()
;
else
cmark
->
unmarkAll
()
;
}
current
=
m
.
begin
()
;
while
(
current
!=
m
.
end
()
&&
(
m
.
isBoundaryMarked
(
current
)
||
!
m_good
(
current
)))
m
.
next
(
current
)
;
if
(
current
==
m
.
end
())
current
=
NIL
;
else
cmark
->
mark
(
current
)
;
{
if
(
dmark
)
dmark
->
markOrbit
<
ORBIT
>
(
current
)
;
else
cmark
->
mark
(
current
)
;
}
firstTraversal
=
false
;
}
firstTraversal
=
false
;
return
current
;
}
...
...
@@ -84,32 +104,40 @@ Dart TraversorCell<MAP, ORBIT>::next()
{
if
(
current
!=
NIL
)
{
bool
ismarked
;
if
(
dmark
)
ismarked
=
dmark
->
isMarked
(
current
)
;
if
(
quickTraversal
!=
NULL
)
{
cont
->
next
(
qCurrent
)
;
current
=
(
*
quickTraversal
)[
qCurrent
]
;
}
else
ismarked
=
cmark
->
isMarked
(
current
)
;
while
(
current
!=
NIL
&&
(
ismarked
||
m
.
isBoundaryMarked
(
current
)
||
!
m_good
(
current
)))
{
m
.
next
(
current
)
;
if
(
current
==
m
.
end
()
)
current
=
NIL
;
bool
ismarked
;
if
(
dmark
)
ismarked
=
dmark
->
isMarked
(
current
)
;
else
ismarked
=
cmark
->
isMarked
(
current
)
;
while
(
current
!=
NIL
&&
(
ismarked
||
m
.
isBoundaryMarked
(
current
)
||
!
m_good
(
current
)))
{
if
(
dmark
)
ismarked
=
dmark
->
isMarked
(
current
)
;
m
.
next
(
current
)
;
if
(
current
==
m
.
end
())
current
=
NIL
;
else
ismarked
=
cmark
->
isMarked
(
current
)
;
{
if
(
dmark
)
ismarked
=
dmark
->
isMarked
(
current
)
;
else
ismarked
=
cmark
->
isMarked
(
current
)
;
}
}
}
if
(
current
!=
NIL
)
{
if
(
dmark
)
dmark
->
markOrbit
<
ORBIT
>
(
current
)
;
else
cmark
->
mark
(
current
)
;
if
(
current
!=
NIL
)
{
if
(
dmark
)
dmark
->
markOrbit
<
ORBIT
>
(
current
)
;
else
cmark
->
mark
(
current
)
;
}
}
}
return
current
;
...
...
src/Topology/generic/genericmap.cpp
View file @
b3abfc41
...
...
@@ -73,6 +73,7 @@ GenericMap::GenericMap() : m_nbThreads(1)
m_attribs
[
i
].
setOrbit
(
i
)
;
m_attribs
[
i
].
setRegistry
(
m_attributes_registry_map
)
;
m_embeddings
[
i
]
=
NULL
;
m_quickTraversal
[
i
]
=
NULL
;
for
(
unsigned
int
j
=
0
;
j
<
NB_THREAD
;
++
j
)
{
m_marksets
[
i
][
j
].
clear
()
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment