Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CGoGN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
KennethVanhoey
CGoGN
Commits
de2a68b9
Commit
de2a68b9
authored
Feb 17, 2012
by
Pierre Kraemer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MR : Loop filters
parent
9c008fb8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
123 additions
and
18 deletions
+123
-18
include/Topology/map/map2MR/filters_Primal.h
include/Topology/map/map2MR/filters_Primal.h
+123
-18
No files found.
include/Topology/map/map2MR/filters_Primal.h
View file @
de2a68b9
...
...
@@ -41,19 +41,67 @@ public:
virtual
void
operator
()
()
=
0
;
}
;
/*********************************************************************************
* LOOP BASIC FUNCTIONS
*********************************************************************************/
template
<
typename
PFP
>
typename
PFP
::
VEC3
loopOddVertex
(
typename
PFP
::
MAP
&
map
,
const
typename
PFP
::
TVEC3
&
position
,
Dart
d1
)
{
Dart
d2
=
map
.
phi2
(
d1
)
;
Dart
d3
=
map
.
phi_1
(
d1
)
;
Dart
d4
=
map
.
phi_1
(
d2
)
;
typename
PFP
::
VEC3
p1
=
position
[
d1
]
;
typename
PFP
::
VEC3
p2
=
position
[
d2
]
;
typename
PFP
::
VEC3
p3
=
position
[
d3
]
;
typename
PFP
::
VEC3
p4
=
position
[
d4
]
;
p1
*=
3.0
/
8.0
;
p2
*=
3.0
/
8.0
;
p3
*=
1.0
/
8.0
;
p4
*=
1.0
/
8.0
;
return
p1
+
p2
+
p3
+
p4
;
}
template
<
typename
PFP
>
typename
PFP
::
VEC3
loopEvenVertex
(
typename
PFP
::
MAP
&
map
,
const
typename
PFP
::
TVEC3
&
position
,
Dart
d
)
{
map
.
incCurrentLevel
()
;
typename
PFP
::
VEC3
np
(
0
)
;
unsigned
int
degree
=
0
;
Traversor2VVaE
<
typename
PFP
::
MAP
>
trav
(
map
,
d
)
;
for
(
Dart
it
=
trav
.
begin
();
it
!=
trav
.
end
();
it
=
trav
.
next
())
{
++
degree
;
np
+=
position
[
it
]
;
}
map
.
decCurrentLevel
()
;
float
mu
=
3.0
/
8.0
+
1.0
/
4.0
*
cos
(
2.0
*
M_PI
/
degree
)
;
mu
=
(
5.0
/
8.0
-
(
mu
*
mu
))
/
degree
;
np
*=
8.0
/
5.0
*
mu
;
return
np
;
}
/*********************************************************************************
* ANALYSIS FILTERS
*********************************************************************************/
template
<
typename
PFP
>
class
Pipo
OddAnalysisFilter
:
public
MRFilter
class
Loop
OddAnalysisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
Pipo
OddAnalysisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
Loop
OddAnalysisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
...
...
@@ -61,10 +109,12 @@ public:
TraversorE
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
typename
PFP
::
VEC3
p
=
loopOddVertex
<
PFP
>
(
m_map
,
m_position
,
d
)
;
m_map
.
incCurrentLevel
()
;
Dart
oddV
=
m_map
.
phi2
(
d
)
;
m_position
[
oddV
]
=
typename
PFP
::
VEC3
(
0
)
;
m_position
[
oddV
]
-=
p
;
m_map
.
decCurrentLevel
()
;
}
...
...
@@ -72,22 +122,49 @@ public:
}
;
template
<
typename
PFP
>
class
Pipo
EvenAnalysisFilter
:
public
MRFilter
class
Loop
EvenAnalysisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
Pipo
EvenAnalysisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
Loop
EvenAnalysisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
{
// TraversorV<typename PFP::MAP> trav(m_map) ;
// for (Dart d = trav.begin(); d != trav.end(); d = trav.next())
// {
// }
TraversorV
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
typename
PFP
::
VEC3
p
=
loopEvenVertex
<
PFP
>
(
m_map
,
m_position
,
d
)
;
m_position
[
d
]
-=
p
;
}
}
}
;
template
<
typename
PFP
>
class
LoopNormalisationAnalysisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
LoopNormalisationAnalysisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
{
TraversorV
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
unsigned
int
degree
=
m_map
.
vertexDegree
(
d
)
;
float
n
=
3.0
/
8.0
+
1.0
/
4.0
*
cos
(
2.0
*
M_PI
/
degree
)
;
n
=
8.0
/
5.0
*
(
n
*
n
)
;
m_position
[
d
]
/=
n
;
}
}
}
;
...
...
@@ -96,14 +173,14 @@ public:
*********************************************************************************/
template
<
typename
PFP
>
class
Pipo
OddSynthesisFilter
:
public
MRFilter
class
Loop
OddSynthesisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
Pipo
OddSynthesisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
Loop
OddSynthesisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
...
...
@@ -111,7 +188,7 @@ public:
TraversorE
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
typename
PFP
::
VEC3
p
=
(
m_position
[
d
]
+
m_position
[
m_map
.
phi2
(
d
)])
/
2.0
;
typename
PFP
::
VEC3
p
=
loopOddVertex
<
PFP
>
(
m_map
,
m_position
,
d
)
;
m_map
.
incCurrentLevel
()
;
...
...
@@ -124,25 +201,53 @@ public:
}
;
template
<
typename
PFP
>
class
Pipo
EvenSynthesisFilter
:
public
MRFilter
class
Loop
EvenSynthesisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
Pipo
EvenSynthesisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
Loop
EvenSynthesisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
{
// TraversorV<typename PFP::MAP> trav(m_map) ;
// for (Dart d = trav.begin(); d != trav.end(); d = trav.next())
// {
// }
TraversorV
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
typename
PFP
::
VEC3
p
=
loopEvenVertex
<
PFP
>
(
m_map
,
m_position
,
d
)
;
m_position
[
d
]
+=
p
;
}
}
}
;
template
<
typename
PFP
>
class
LoopNormalisationSynthesisFilter
:
public
MRFilter
{
protected:
typename
PFP
::
MAP
&
m_map
;
typename
PFP
::
TVEC3
&
m_position
;
public:
LoopNormalisationSynthesisFilter
(
typename
PFP
::
MAP
&
m
,
typename
PFP
::
TVEC3
&
p
)
:
m_map
(
m
),
m_position
(
p
)
{}
void
operator
()
()
{
TraversorV
<
typename
PFP
::
MAP
>
trav
(
m_map
)
;
for
(
Dart
d
=
trav
.
begin
();
d
!=
trav
.
end
();
d
=
trav
.
next
())
{
unsigned
int
degree
=
m_map
.
vertexDegree
(
d
)
;
float
n
=
3.0
/
8.0
+
1.0
/
4.0
*
cos
(
2.0
*
M_PI
/
degree
)
;
n
=
8.0
/
5.0
*
(
n
*
n
)
;
m_position
[
d
]
*=
n
;
}
}
}
;
/*********************************************************************************
...
...
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