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
Thomas Pitiot
CGoGN
Commits
4797d495
Commit
4797d495
authored
Feb 06, 2012
by
Sylvain Thery
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replace alpha1 by phi2_1 and alpha_1 by phi12 in 2D Algorithms
parent
c6dfffb5
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
135 additions
and
115 deletions
+135
-115
Apps/Examples/Tests/test_compact.cpp
Apps/Examples/Tests/test_compact.cpp
+1
-1
include/Algo/BooleanOperator/mergeVertices.hpp
include/Algo/BooleanOperator/mergeVertices.hpp
+3
-3
include/Algo/Decimation/basic.h
include/Algo/Decimation/basic.h
+12
-12
include/Algo/Decimation/edgeSelector.hpp
include/Algo/Decimation/edgeSelector.hpp
+16
-16
include/Algo/Decimation/geometryApproximator.hpp
include/Algo/Decimation/geometryApproximator.hpp
+8
-8
include/Algo/Decimation/geometryPredictor.hpp
include/Algo/Decimation/geometryPredictor.hpp
+11
-11
include/Algo/Decimation/halfEdgeSelector.hpp
include/Algo/Decimation/halfEdgeSelector.hpp
+11
-11
include/Algo/Decimation/lightfieldApproximator.hpp
include/Algo/Decimation/lightfieldApproximator.hpp
+7
-7
include/Algo/Decimation/simplifMesh.hpp
include/Algo/Decimation/simplifMesh.hpp
+4
-4
include/Algo/Geometry/stats.h
include/Algo/Geometry/stats.h
+1
-1
include/Algo/Import/importSvg.hpp
include/Algo/Import/importSvg.hpp
+2
-2
include/Algo/LinearSolving/matrixSetup.h
include/Algo/LinearSolving/matrixSetup.h
+1
-1
include/Algo/Modelisation/extrusion.hpp
include/Algo/Modelisation/extrusion.hpp
+2
-2
include/Algo/Modelisation/subdivision.hpp
include/Algo/Modelisation/subdivision.hpp
+7
-7
include/Algo/MovingObjects/particle_cell_2D.hpp
include/Algo/MovingObjects/particle_cell_2D.hpp
+10
-10
include/Algo/MovingObjects/particle_cell_2D_memo.hpp
include/Algo/MovingObjects/particle_cell_2D_memo.hpp
+4
-4
include/Algo/MovingObjects/particle_cell_2DandHalf.hpp
include/Algo/MovingObjects/particle_cell_2DandHalf.hpp
+10
-10
include/Algo/Remeshing/pliant.hpp
include/Algo/Remeshing/pliant.hpp
+3
-3
include/Algo/Selection/collector.hpp
include/Algo/Selection/collector.hpp
+2
-2
include/Topology/map/map2.h
include/Topology/map/map2.h
+10
-0
include/Topology/map/map2.hpp
include/Topology/map/map2.hpp
+10
-0
No files found.
Apps/Examples/Tests/test_compact.cpp
View file @
4797d495
...
@@ -103,7 +103,7 @@ void test_compact_map(const std::string& name)
...
@@ -103,7 +103,7 @@ void test_compact_map(const std::string& name)
do
// mark all edges incident to vertex;
do
// mark all edges incident to vertex;
{
{
dm
.
markOrbit
(
EDGE
,
e
);
dm
.
markOrbit
(
EDGE
,
e
);
e
=
myMap
.
alpha
1
(
e
);
e
=
myMap
.
phi2_
1
(
e
);
}
while
(
e
!=
d
);
}
while
(
e
!=
d
);
}
}
i
++
;
i
++
;
...
...
include/Algo/BooleanOperator/mergeVertices.hpp
View file @
4797d495
...
@@ -38,17 +38,17 @@ void mergeVertex(typename PFP::MAP& map, const typename PFP::TVEC3& positions, D
...
@@ -38,17 +38,17 @@ void mergeVertex(typename PFP::MAP& map, const typename PFP::TVEC3& positions, D
Dart
dd
;
Dart
dd
;
do
do
{
{
dd
=
map
.
alpha
1
(
d
);
dd
=
map
.
phi2_
1
(
d
);
map
.
removeEdgeFromVertex
(
dd
);
map
.
removeEdgeFromVertex
(
dd
);
Dart
ee
=
e
;
Dart
ee
=
e
;
do
do
{
{
if
(
Geom
::
testOrientation2D
(
positions
[
map
.
phi1
(
dd
)],
positions
[
ee
],
positions
[
map
.
phi1
(
ee
)])
!=
Geom
::
RIGHT
if
(
Geom
::
testOrientation2D
(
positions
[
map
.
phi1
(
dd
)],
positions
[
ee
],
positions
[
map
.
phi1
(
ee
)])
!=
Geom
::
RIGHT
&&
Geom
::
testOrientation2D
(
positions
[
map
.
phi1
(
dd
)],
positions
[
ee
],
positions
[
map
.
phi1
(
map
.
alpha
1
(
ee
))])
==
Geom
::
RIGHT
)
&&
Geom
::
testOrientation2D
(
positions
[
map
.
phi1
(
dd
)],
positions
[
ee
],
positions
[
map
.
phi1
(
map
.
phi2_
1
(
ee
))])
==
Geom
::
RIGHT
)
{
{
break
;
break
;
}
}
ee
=
map
.
alpha
1
(
ee
);
ee
=
map
.
phi2_
1
(
ee
);
}
while
(
ee
!=
e
);
}
while
(
ee
!=
e
);
map
.
insertEdgeInVertex
(
ee
,
dd
);
map
.
insertEdgeInVertex
(
ee
,
dd
);
}
while
(
dd
!=
d
);
}
while
(
dd
!=
d
);
...
...
include/Algo/Decimation/basic.h
View file @
4797d495
...
@@ -56,18 +56,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
...
@@ -56,18 +56,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
unsigned
int
vu1
[
32
];
// pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
unsigned
int
vu1
[
32
];
// pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
val_vd
-=
3
;
// evite le -3 dans la boucle
val_vd
-=
3
;
// evite le -3 dans la boucle
val_vdd
-=
3
;
val_vdd
-=
3
;
Dart
vit1
=
map
.
alpha
1
(
map
.
alpha
1
(
d
));
Dart
vit1
=
map
.
phi2_
1
(
map
.
phi2_
1
(
d
));
for
(
unsigned
int
i
=
0
;
i
<
val_vd
;
++
i
)
for
(
unsigned
int
i
=
0
;
i
<
val_vd
;
++
i
)
{
{
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit1
),
VERTEX
);
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit1
),
VERTEX
);
vu1
[
i
]
=
ve
;
vu1
[
i
]
=
ve
;
vit1
=
map
.
alpha
1
(
vit1
);
vit1
=
map
.
phi2_
1
(
vit1
);
}
}
val_vd
--
;
// pour le parcours avec while >=0
val_vd
--
;
// pour le parcours avec while >=0
Dart
vit2
=
map
.
alpha
1
(
map
.
alpha
1
(
dd
));
Dart
vit2
=
map
.
phi2_
1
(
map
.
phi2_
1
(
dd
));
for
(
unsigned
int
i
=
0
;
i
<
val_vdd
;
++
i
)
for
(
unsigned
int
i
=
0
;
i
<
val_vdd
;
++
i
)
{
{
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit2
),
VERTEX
);
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit2
),
VERTEX
);
...
@@ -79,7 +79,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
...
@@ -79,7 +79,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
return
false
;
return
false
;
--
j
;
--
j
;
}
}
vit2
=
map
.
alpha
1
(
vit2
);
vit2
=
map
.
phi2_
1
(
vit2
);
}
}
return
true
;
return
true
;
...
@@ -96,16 +96,16 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
...
@@ -96,16 +96,16 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
int
val_vd
=
0
;
int
val_vd
=
0
;
Dart
tmp
=
d
;
Dart
tmp
=
d
;
do
{
++
val_vd
;
tmp
=
map
.
alpha
1
(
tmp
)
;
}
while
(
tmp
!=
d
)
;
do
{
++
val_vd
;
tmp
=
map
.
phi2_
1
(
tmp
)
;
}
while
(
tmp
!=
d
)
;
int
val_vdd
=
0
;
int
val_vdd
=
0
;
tmp
=
dd
;
tmp
=
dd
;
do
{
++
val_vdd
;
tmp
=
map
.
alpha
1
(
tmp
)
;
}
while
(
tmp
!=
dd
)
;
do
{
++
val_vdd
;
tmp
=
map
.
phi2_
1
(
tmp
)
;
}
while
(
tmp
!=
dd
)
;
int
val_vdp
=
0
;
int
val_vdp
=
0
;
tmp
=
dp
;
tmp
=
dp
;
do
{
++
val_vdp
;
tmp
=
map
.
alpha
1
(
tmp
)
;
}
while
(
tmp
!=
dp
)
;
do
{
++
val_vdp
;
tmp
=
map
.
phi2_
1
(
tmp
)
;
}
while
(
tmp
!=
dp
)
;
int
val_vddp
=
0
;
int
val_vddp
=
0
;
tmp
=
ddp
;
tmp
=
ddp
;
do
{
++
val_vddp
;
tmp
=
map
.
alpha
1
(
tmp
)
;
}
while
(
tmp
!=
ddp
)
;
do
{
++
val_vddp
;
tmp
=
map
.
phi2_
1
(
tmp
)
;
}
while
(
tmp
!=
ddp
)
;
if
(
val_vd
+
val_vdd
<
8
||
val_vd
+
val_vdd
>
11
||
val_vdp
<
5
||
val_vddp
<
5
)
if
(
val_vd
+
val_vdd
<
8
||
val_vd
+
val_vdd
>
11
||
val_vdp
<
5
||
val_vddp
<
5
)
return
false
;
return
false
;
...
@@ -115,18 +115,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
...
@@ -115,18 +115,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
unsigned
int
vu1
[
32
];
// pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
unsigned
int
vu1
[
32
];
// pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
val_vd
-=
3
;
// evite le -3 dans la boucle
val_vd
-=
3
;
// evite le -3 dans la boucle
val_vdd
-=
3
;
val_vdd
-=
3
;
Dart
vit1
=
map
.
alpha
1
(
map
.
alpha
1
(
d
));
Dart
vit1
=
map
.
phi2_
1
(
map
.
phi2_
1
(
d
));
for
(
int
i
=
0
;
i
<
val_vd
;
++
i
)
for
(
int
i
=
0
;
i
<
val_vd
;
++
i
)
{
{
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit1
),
VERTEX
);
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit1
),
VERTEX
);
vu1
[
i
]
=
ve
;
vu1
[
i
]
=
ve
;
vit1
=
map
.
alpha
1
(
vit1
);
vit1
=
map
.
phi2_
1
(
vit1
);
}
}
val_vd
--
;
// pour le parcours avec while >=0
val_vd
--
;
// pour le parcours avec while >=0
Dart
vit2
=
map
.
alpha
1
(
map
.
alpha
1
(
dd
));
Dart
vit2
=
map
.
phi2_
1
(
map
.
phi2_
1
(
dd
));
for
(
int
i
=
0
;
i
<
val_vdd
;
++
i
)
for
(
int
i
=
0
;
i
<
val_vdd
;
++
i
)
{
{
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit2
),
VERTEX
);
unsigned
int
ve
=
map
.
getEmbedding
(
map
.
phi2
(
vit2
),
VERTEX
);
...
@@ -138,7 +138,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
...
@@ -138,7 +138,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
return
false
;
return
false
;
--
j
;
--
j
;
}
}
vit2
=
map
.
alpha
1
(
vit2
);
vit2
=
map
.
phi2_
1
(
vit2
);
}
}
return
true
;
return
true
;
...
...
include/Algo/Decimation/edgeSelector.hpp
View file @
4797d495
...
@@ -204,19 +204,19 @@ void EdgeSelector_Length<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
...
@@ -204,19 +204,19 @@ void EdgeSelector_Length<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{
{
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
// treating differently :
// treating differently :
Dart
vit2
=
m
.
alpha_1
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
vit2
=
m
.
phi12
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
do
// - edges for which only the collapsibility must be re-tested
do
// - edges for which only the collapsibility must be re-tested
{
{
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
vit2
=
m
.
alpha_1
(
vit2
)
;
vit2
=
m
.
phi12
(
vit2
)
;
}
while
(
vit2
!=
stop
)
;
}
while
(
vit2
!=
stop
)
;
}
}
else
else
updateEdgeInfo
(
vit
,
true
)
;
updateEdgeInfo
(
vit
,
true
)
;
vit
=
m
.
alpha
1
(
vit
)
;
vit
=
m
.
phi2_
1
(
vit
)
;
}
while
(
vit
!=
d2
)
;
}
while
(
vit
!=
d2
)
;
cur
=
edges
.
begin
()
;
// set the current edge to the first one
cur
=
edges
.
begin
()
;
// set the current edge to the first one
...
@@ -399,19 +399,19 @@ void EdgeSelector_QEM<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
...
@@ -399,19 +399,19 @@ void EdgeSelector_QEM<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{
{
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
// treating differently :
// treating differently :
Dart
vit2
=
m
.
alpha_1
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
vit2
=
m
.
phi12
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
do
// - edges for which only the collapsibility must be re-tested
do
// - edges for which only the collapsibility must be re-tested
{
{
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
vit2
=
m
.
alpha_1
(
vit2
)
;
vit2
=
m
.
phi12
(
vit2
)
;
}
while
(
vit2
!=
stop
)
;
}
while
(
vit2
!=
stop
)
;
}
}
else
else
updateEdgeInfo
(
vit
,
true
)
;
updateEdgeInfo
(
vit
,
true
)
;
vit
=
m
.
alpha
1
(
vit
)
;
vit
=
m
.
phi2_
1
(
vit
)
;
}
while
(
vit
!=
d2
)
;
}
while
(
vit
!=
d2
)
;
cur
=
edges
.
begin
()
;
// set the current edge to the first one
cur
=
edges
.
begin
()
;
// set the current edge to the first one
...
@@ -604,7 +604,7 @@ void EdgeSelector_QEMml<PFP>::recomputeQuadric(const Dart d, const bool recomput
...
@@ -604,7 +604,7 @@ void EdgeSelector_QEMml<PFP>::recomputeQuadric(const Dart d, const bool recomput
do
{
do
{
// Make step
// Make step
dBack
=
this
->
m_map
.
phi2
(
dFront
)
;
dBack
=
this
->
m_map
.
phi2
(
dFront
)
;
dFront
=
this
->
m_map
.
alpha
1
(
dFront
)
;
dFront
=
this
->
m_map
.
phi2_
1
(
dFront
)
;
if
(
dBack
!=
dFront
)
{
// if dFront is no border
if
(
dBack
!=
dFront
)
{
// if dFront is no border
quadric
[
d
]
+=
Quadric
<
REAL
>
(
this
->
m_position
[
d
],
this
->
m_position
[
this
->
m_map
.
phi2
(
dFront
)],
this
->
m_position
[
dBack
])
;
quadric
[
d
]
+=
Quadric
<
REAL
>
(
this
->
m_position
[
d
],
this
->
m_position
[
this
->
m_map
.
phi2
(
dFront
)],
this
->
m_position
[
dBack
])
;
...
@@ -633,16 +633,16 @@ void EdgeSelector_QEMml<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
...
@@ -633,16 +633,16 @@ void EdgeSelector_QEMml<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
else
// treating differently :
else
// treating differently :
updateEdgeInfo
(
vit
,
true
)
;
updateEdgeInfo
(
vit
,
true
)
;
Dart
vit2
=
m
.
alpha_1
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
vit2
=
m
.
phi12
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
do
// - edges for which only the collapsibility must be re-tested
do
// - edges for which only the collapsibility must be re-tested
{
{
updateEdgeInfo
(
vit2
,
true
)
;
updateEdgeInfo
(
vit2
,
true
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
vit2
=
m
.
alpha_1
(
vit2
)
;
vit2
=
m
.
phi12
(
vit2
)
;
}
while
(
vit2
!=
stop
)
;
}
while
(
vit2
!=
stop
)
;
vit
=
m
.
alpha
1
(
vit
)
;
vit
=
m
.
phi2_
1
(
vit
)
;
}
while
(
vit
!=
d2
)
;
}
while
(
vit
!=
d2
)
;
cur
=
edges
.
begin
()
;
// set the current edge to the first one
cur
=
edges
.
begin
()
;
// set the current edge to the first one
...
@@ -809,19 +809,19 @@ void EdgeSelector_Curvature<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
...
@@ -809,19 +809,19 @@ void EdgeSelector_Curvature<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{
{
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
// treating differently :
// treating differently :
Dart
vit2
=
m
.
alpha_1
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
vit2
=
m
.
phi12
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
do
// - edges for which only the collapsibility must be re-tested
do
// - edges for which only the collapsibility must be re-tested
{
{
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
vit2
=
m
.
alpha_1
(
vit2
)
;
vit2
=
m
.
phi12
(
vit2
)
;
}
while
(
vit2
!=
stop
)
;
}
while
(
vit2
!=
stop
)
;
}
}
else
else
updateEdgeInfo
(
vit
,
true
)
;
updateEdgeInfo
(
vit
,
true
)
;
vit
=
m
.
alpha
1
(
vit
)
;
vit
=
m
.
phi2_
1
(
vit
)
;
}
while
(
vit
!=
d2
)
;
}
while
(
vit
!=
d2
)
;
cur
=
edges
.
begin
()
;
// set the current edge to the first one
cur
=
edges
.
begin
()
;
// set the current edge to the first one
...
@@ -1013,19 +1013,19 @@ void EdgeSelector_MinDetail<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
...
@@ -1013,19 +1013,19 @@ void EdgeSelector_MinDetail<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{
{
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
initEdgeInfo
(
vit
)
;
// various optimizations are applied here by
// treating differently :
// treating differently :
Dart
vit2
=
m
.
alpha_1
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
vit2
=
m
.
phi12
(
m
.
phi1
(
vit
))
;
// - edges for which the criteria must be recomputed
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
Dart
stop
=
m
.
phi2
(
vit
)
;
// - edges that must be re-embedded
do
// - edges for which only the collapsibility must be re-tested
do
// - edges for which only the collapsibility must be re-tested
{
{
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
vit2
,
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
updateEdgeInfo
(
m
.
phi1
(
vit2
),
false
)
;
vit2
=
m
.
alpha_1
(
vit2
)
;
vit2
=
m
.
phi12
(
vit2
)
;
}
while
(
vit2
!=
stop
)
;
}
while
(
vit2
!=
stop
)
;
}
}
else
else
updateEdgeInfo
(
vit
,
true
)
;
updateEdgeInfo
(
vit
,
true
)
;
vit
=
m
.
alpha
1
(
vit
)
;
vit
=
m
.
phi2_
1
(
vit
)
;
}
while
(
vit
!=
d2
)
;
}
while
(
vit
!=
d2
)
;
cur
=
edges
.
begin
()
;
// set the current edge to the first one
cur
=
edges
.
begin
()
;
// set the current edge to the first one
...
...
include/Algo/Decimation/geometryApproximator.hpp
View file @
4797d495
...
@@ -64,7 +64,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
...
@@ -64,7 +64,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
{
{
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
q1
+=
q
;
q1
+=
q
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
d
)
;
}
while
(
it
!=
d
)
;
// compute the error quadric associated to v2
// compute the error quadric associated to v2
...
@@ -73,7 +73,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
...
@@ -73,7 +73,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
{
{
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
q2
+=
q
;
q2
+=
q
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
dd
)
;
}
while
(
it
!=
dd
)
;
}
}
else
// if the selector is QEM, use the error quadrics computed by the selector
else
// if the selector is QEM, use the error quadrics computed by the selector
...
@@ -138,7 +138,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
...
@@ -138,7 +138,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
{
{
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
q1
+=
q
;
q1
+=
q
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
d
)
;
}
while
(
it
!=
d
)
;
// compute the error quadric associated to v2
// compute the error quadric associated to v2
...
@@ -147,7 +147,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
...
@@ -147,7 +147,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
{
{
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
Quadric
<
REAL
>
q
(
this
->
m_attrV
[
it
],
this
->
m_attrV
[
m
.
phi1
(
it
)],
this
->
m_attrV
[
m
.
phi_1
(
it
)])
;
q2
+=
q
;
q2
+=
q
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
dd
)
;
}
while
(
it
!=
dd
)
;
}
}
else
// if the selector is QEM, use the error quadrics computed by the selector
else
// if the selector is QEM, use the error quadrics computed by the selector
...
@@ -312,14 +312,14 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
...
@@ -312,14 +312,14 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do
do
{
{
++
k1
;
++
k1
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
d
)
;
}
while
(
it
!=
d
)
;
REAL
k2
=
0
;
REAL
k2
=
0
;
it
=
dd
;
it
=
dd
;
do
do
{
{
++
k2
;
++
k2
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
dd
)
;
}
while
(
it
!=
dd
)
;
REAL
alpha
=
(
k1
-
1
)
*
(
k2
-
1
)
/
(
k1
*
k2
-
1
)
;
REAL
alpha
=
(
k1
-
1
)
*
(
k2
-
1
)
/
(
k1
*
k2
-
1
)
;
...
@@ -330,7 +330,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
...
@@ -330,7 +330,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do
do
{
{
m1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
m1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
count
;
++
count
;
}
while
(
it
!=
d
)
;
}
while
(
it
!=
d
)
;
m1
/=
REAL
(
count
)
;
m1
/=
REAL
(
count
)
;
...
@@ -342,7 +342,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
...
@@ -342,7 +342,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do
do
{
{
m2
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
m2
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
count
;
++
count
;
}
while
(
it
!=
dd
)
;
}
while
(
it
!=
dd
)
;
m2
/=
REAL
(
count
)
;
m2
/=
REAL
(
count
)
;
...
...
include/Algo/Decimation/geometryPredictor.hpp
View file @
4797d495
...
@@ -51,7 +51,7 @@ void Predictor_HalfCollapse<PFP>::predict(Dart d2, Dart dd2)
...
@@ -51,7 +51,7 @@ void Predictor_HalfCollapse<PFP>::predict(Dart d2, Dart dd2)
Dart
it
=
dd2
;
Dart
it
=
dd2
;
do
{
do
{
s2_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
s2_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
k2
;
++
k2
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
...
@@ -84,12 +84,12 @@ typename PFP::REAL Predictor_CornerCutting<PFP>::autoAlpha(Dart d2, Dart dd2)
...
@@ -84,12 +84,12 @@ typename PFP::REAL Predictor_CornerCutting<PFP>::autoAlpha(Dart d2, Dart dd2)
do
do
{
{
++
k1
;
++
k1
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
dd2
)
;
}
while
(
it
!=
dd2
)
;
do
do
{
{
++
k2
;
++
k2
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
d2
)
;
}
while
(
it
!=
d2
)
;
return
(
k1
-
1
)
*
(
k2
-
1
)
/
(
k1
*
k2
-
1
)
;
return
(
k1
-
1
)
*
(
k2
-
1
)
/
(
k1
*
k2
-
1
)
;
}
}
...
@@ -116,7 +116,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
...
@@ -116,7 +116,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
Dart
it
=
d2
;
Dart
it
=
d2
;
do
{
do
{
m1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
m1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
count
;
++
count
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
m1
/=
REAL
(
count
)
;
m1
/=
REAL
(
count
)
;
...
@@ -130,7 +130,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
...
@@ -130,7 +130,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
it
=
dd2
;
it
=
dd2
;
do
{
do
{
m2
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
m2
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
count
;
++
count
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
m2
/=
REAL
(
count
)
;
m2
/=
REAL
(
count
)
;
...
@@ -155,7 +155,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
...
@@ -155,7 +155,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart
it
=
d2
;
Dart
it
=
d2
;
do
{
do
{
s1_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
s1_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
k1
;
++
k1
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
...
@@ -163,7 +163,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
...
@@ -163,7 +163,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
it
=
dd2
;
it
=
dd2
;
do
{
do
{
s2_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
s2_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
k2
;
++
k2
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
d2
))
;
...
@@ -210,7 +210,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
...
@@ -210,7 +210,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart
it
=
d2
;
Dart
it
=
d2
;
do
{
do
{
s1_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
s1_1
+=
this
->
m_attrV
[
m
.
phi1
(
it
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
++
k1
;
++
k1
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
}
while
(
m
.
phi2
(
it
)
!=
m
.
phi_1
(
dd2
))
;
...
@@ -221,7 +221,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
...
@@ -221,7 +221,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart
p2
=
m
.
phi2
(
p1
)
;
Dart
p2
=
m
.
phi2
(
p1
)
;
if
(
p2
!=
p1
)
if
(
p2
!=
p1
)
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
p2
)]
;
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
p2
)]
;
it
=
m
.
alpha
1
(
it
)
;
it
=
m
.
phi2_
1
(
it
)
;
}
while
(
it
!=
dd2
)
;
}
while
(
it
!=
dd2
)
;
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
d1
)]
;
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
d1
)]
;
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
dd2
)]
;
s1_2
+=
this
->
m_attrV
[
m
.
phi_1
(
dd2
)]
;
...
@@ -230,7 +230,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
...
@@ -230,7 +230,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
it
=
dd2
;
it
=
dd2
;
do
{