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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sauvage
CGoGN
Commits
edfc3ed4
Commit
edfc3ed4
authored
Nov 09, 2011
by
Thomas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
qq modif dans boundingBox et dans les embedddedgmap3
parent
61611d16
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
65 deletions
+48
-65
include/Geometry/bounding_box.h
include/Geometry/bounding_box.h
+3
-0
include/Geometry/bounding_box.hpp
include/Geometry/bounding_box.hpp
+22
-1
src/Topology/gmap/embeddedGMap3.cpp
src/Topology/gmap/embeddedGMap3.cpp
+22
-22
src/Topology/gmap/gmap3.cpp
src/Topology/gmap/gmap3.cpp
+1
-42
No files found.
include/Geometry/bounding_box.h
View file @
edfc3ed4
...
...
@@ -77,6 +77,9 @@ class BoundingBox
/* FUNCTIONS */
/**********************************************/
// reinitialize the bounding box
void
reset
()
;
// add a point to the bounding box
void
addPoint
(
const
VEC
&
p
)
;
...
...
include/Geometry/bounding_box.hpp
View file @
edfc3ed4
...
...
@@ -45,37 +45,43 @@ BoundingBox<VEC>::BoundingBox(const VEC& p) :
template
<
typename
VEC
>
VEC
&
BoundingBox
<
VEC
>::
min
()
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
m_pMin
;
}
template
<
typename
VEC
>
const
VEC
&
BoundingBox
<
VEC
>::
min
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
m_pMin
;
}
template
<
typename
VEC
>
VEC
&
BoundingBox
<
VEC
>::
max
()
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
m_pMax
;
}
template
<
typename
VEC
>
const
VEC
&
BoundingBox
<
VEC
>::
max
()
const
{
assert
(
m_initialized
);
return
m_pMax
;
}
template
<
typename
VEC
>
typename
VEC
::
DATA_TYPE
BoundingBox
<
VEC
>::
size
(
unsigned
int
coord
)
const
{
assert
(
coord
<
m_pMax
.
dimension
())
;
assert
(
m_initialized
&&
coord
<
m_pMax
.
dimension
())
;
return
m_pMax
[
coord
]
-
m_pMin
[
coord
]
;
}
template
<
typename
VEC
>
typename
VEC
::
DATA_TYPE
BoundingBox
<
VEC
>::
maxSize
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
typename
VEC
::
DATA_TYPE
max
=
m_pMax
[
0
]
-
m_pMin
[
0
]
;
for
(
unsigned
int
i
=
1
;
i
<
m_pMax
.
dimension
();
++
i
)
{
...
...
@@ -89,6 +95,8 @@ typename VEC::DATA_TYPE BoundingBox<VEC>::maxSize() const
template
<
typename
VEC
>
typename
VEC
::
DATA_TYPE
BoundingBox
<
VEC
>::
minSize
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
typename
VEC
::
DATA_TYPE
min
=
m_pMax
[
0
]
-
m_pMin
[
0
]
;
for
(
unsigned
int
i
=
1
;
i
<
m_pMax
.
dimension
();
++
i
)
{
...
...
@@ -102,18 +110,21 @@ typename VEC::DATA_TYPE BoundingBox<VEC>::minSize() const
template
<
typename
VEC
>
VEC
BoundingBox
<
VEC
>::
diag
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
m_pMax
-
m_pMin
;
}
template
<
typename
VEC
>
typename
VEC
::
DATA_TYPE
BoundingBox
<
VEC
>::
diagSize
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
(
m_pMax
-
m_pMin
).
norm
()
;
}
template
<
typename
VEC
>
VEC
BoundingBox
<
VEC
>::
center
()
const
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
VEC
center
=
(
m_pMax
+
m_pMin
)
/
typename
VEC
::
DATA_TYPE
(
2
)
;
return
center
;
}
...
...
@@ -128,6 +139,12 @@ bool BoundingBox<VEC>::isInitialized() const
/* FUNCTIONS */
/**********************************************/
template
<
typename
VEC
>
void
BoundingBox
<
VEC
>::
reset
()
{
m_initialized
=
false
;
}
template
<
typename
VEC
>
void
BoundingBox
<
VEC
>::
addPoint
(
const
VEC
&
p
)
{
...
...
@@ -152,6 +169,7 @@ void BoundingBox<VEC>::addPoint(const VEC& p)
template
<
typename
VEC
>
bool
BoundingBox
<
VEC
>::
intersects
(
const
BoundingBox
<
VEC
>&
bb
)
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
VEC
bbmin
=
bb
.
min
()
;
VEC
bbmax
=
bb
.
max
()
;
for
(
unsigned
int
i
=
0
;
i
<
bbmin
.
dimension
();
++
i
)
...
...
@@ -167,6 +185,7 @@ bool BoundingBox<VEC>::intersects(const BoundingBox<VEC>& bb)
template
<
typename
VEC
>
void
BoundingBox
<
VEC
>::
fusion
(
const
BoundingBox
<
VEC
>&
bb
)
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
VEC
bbmin
=
bb
.
min
()
;
VEC
bbmax
=
bb
.
max
()
;
for
(
unsigned
int
i
=
0
;
i
<
bbmin
.
dimension
();
++
i
)
...
...
@@ -182,6 +201,7 @@ void BoundingBox<VEC>::fusion(const BoundingBox<VEC>& bb)
template
<
typename
VEC
>
bool
BoundingBox
<
VEC
>::
contains
(
const
VEC
&
p
)
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
for
(
unsigned
int
i
=
0
;
i
<
m_pMin
.
dimension
();
++
i
)
{
if
(
m_pMin
[
i
]
>
p
[
i
])
...
...
@@ -196,6 +216,7 @@ bool BoundingBox<VEC>::contains(const VEC& p)
template
<
typename
VEC
>
bool
BoundingBox
<
VEC
>::
contains
(
const
BoundingBox
<
VEC
>&
bb
)
{
assert
(
m_initialized
||
!
"Bounding box not initialized"
);
return
this
->
contains
(
bb
.
min
())
&&
this
->
contains
(
bb
.
max
());
}
...
...
src/Topology/gmap/embeddedGMap3.cpp
View file @
edfc3ed4
...
...
@@ -53,7 +53,7 @@ void EmbeddedGMap3::sewFaces(Dart d, Dart e)
if
(
isOrbitEmbedded
(
VOLUME
))
{
vEmb
=
getEmbedding
(
VOLUME
,
d
);
embedOrbit
(
VOLUME
,
e
,
vEmb
)
;
embedOrbit
(
VOLUME
,
d
,
vEmb
)
;
}
}
...
...
@@ -101,16 +101,17 @@ void EmbeddedGMap3::sewVolumes(Dart d, Dart e)
//topological sewing
GMap3
::
sewVolumes
(
d
,
e
);
unsigned
int
vEmb
=
EMBNULL
;
//embed the vertex orbits from the oriented face with dart e
//with vertex orbits value from oriented face with dart d
if
(
isOrbitEmbedded
(
VERTEX
))
{
unsigned
int
vEmb1
=
EMBNULL
;
Dart
dd
=
d
;
do
{
vEmb
1
=
getEmbedding
(
VERTEX
,
dd
);
embedOrbit
(
VERTEX
,
dd
,
vEmb
1
)
;
vEmb
=
getEmbedding
(
VERTEX
,
dd
);
embedOrbit
(
VERTEX
,
dd
,
vEmb
)
;
dd
=
phi1
(
dd
)
;
}
while
(
dd
!=
d
)
;
}
...
...
@@ -119,12 +120,11 @@ void EmbeddedGMap3::sewVolumes(Dart d, Dart e)
//for all the face
if
(
isOrbitEmbedded
(
EDGE
))
{
unsigned
int
vEmb1
=
EMBNULL
;
Dart
dd
=
d
;
do
{
vEmb
1
=
getEmbedding
(
EDGE
,
dd
);
embedOrbit
(
EDGE
,
dd
,
vEmb
1
)
;
vEmb
=
getEmbedding
(
EDGE
,
dd
);
embedOrbit
(
EDGE
,
dd
,
vEmb
)
;
dd
=
phi1
(
dd
)
;
}
while
(
dd
!=
d
)
;
}
...
...
@@ -132,7 +132,7 @@ void EmbeddedGMap3::sewVolumes(Dart d, Dart e)
//embed the face orbit from the volume sewn
if
(
isOrbitEmbedded
(
FACE
))
{
unsigned
int
vEmb
=
getEmbedding
(
FACE
,
d
);
vEmb
=
getEmbedding
(
FACE
,
d
);
embedOrbit
(
FACE
,
e
,
vEmb
)
;
}
}
...
...
@@ -385,8 +385,8 @@ bool EmbeddedGMap3::check()
CGoGNout
<<
"Check: embedding begin"
<<
CGoGNendl
;
DartMarker
*
dvMark
,
*
deMark
,
*
dfMark
,
*
dvolMark
;
CellMarker
*
vMark
,
*
eMark
,
*
fMark
,
*
volMark
;
DartMarker
*
dvMark
=
NULL
,
*
deMark
=
NULL
,
*
dfMark
=
NULL
,
*
dvolMark
=
NULL
;
CellMarker
*
vMark
=
NULL
,
*
eMark
=
NULL
,
*
fMark
=
NULL
,
*
volMark
=
NULL
;
if
(
isOrbitEmbedded
(
VERTEX
))
{
...
...
@@ -423,19 +423,19 @@ bool EmbeddedGMap3::check()
if
(
getEmbedding
(
VERTEX
,
d
)
!=
getEmbedding
(
VERTEX
,
beta1
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on vertex (1)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on vertex (
beta
1)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
VERTEX
,
d
)
!=
getEmbedding
(
VERTEX
,
beta2
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on vertex (2)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on vertex (
beta
2)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
VERTEX
,
d
)
!=
getEmbedding
(
VERTEX
,
beta3
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on vertex (3)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on vertex (
beta
3)"
<<
CGoGNendl
;
return
false
;
}
}
...
...
@@ -449,20 +449,20 @@ bool EmbeddedGMap3::check()
if
(
getEmbedding
(
EDGE
,
d
)
!=
getEmbedding
(
EDGE
,
beta0
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on edge (0)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on edge (
beta
0)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
EDGE
,
d
)
!=
getEmbedding
(
EDGE
,
beta2
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on edge (
1
)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on edge (
beta2
)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
EDGE
,
d
)
!=
getEmbedding
(
EDGE
,
beta3
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on edge (
2
)"
<<
CGoGNendl
;
return
false
;
CGoGNout
<<
"Check: different embeddings on edge (
beta3
)"
<<
CGoGNendl
;
//
return false ;
}
}
...
...
@@ -475,13 +475,13 @@ bool EmbeddedGMap3::check()
if
(
getEmbedding
(
FACE
,
d
)
!=
getEmbedding
(
FACE
,
beta0
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on face (0)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on face (
beta
0)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
FACE
,
d
)
!=
getEmbedding
(
FACE
,
beta1
(
d
)))
{
CGoGNout
<<
"Check: different embeddings on face (1)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings on face (
beta
1)"
<<
CGoGNendl
;
return
false
;
}
}
...
...
@@ -495,19 +495,19 @@ bool EmbeddedGMap3::check()
if
(
getEmbedding
(
VOLUME
,
d
)
!=
getEmbedding
(
VOLUME
,
beta0
(
d
)))
{
CGoGNout
<<
"Check: different embeddings in volume (0)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings in volume (
beta
0)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
VOLUME
,
d
)
!=
getEmbedding
(
VOLUME
,
beta1
(
d
)))
{
CGoGNout
<<
"Check: different embeddings in volume (1)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings in volume (
beta
1)"
<<
CGoGNendl
;
return
false
;
}
if
(
getEmbedding
(
VOLUME
,
d
)
!=
getEmbedding
(
VOLUME
,
beta2
(
d
)))
{
CGoGNout
<<
"Check: different embeddings in volume (2)"
<<
CGoGNendl
;
CGoGNout
<<
"Check: different embeddings in volume (
beta
2)"
<<
CGoGNendl
;
return
false
;
}
}
...
...
src/Topology/gmap/gmap3.cpp
View file @
edfc3ed4
...
...
@@ -669,56 +669,15 @@ bool GMap3::foreach_dart_of_vertex(Dart d, FunctorType& f, unsigned int thread)
return
found
;
}
// TODO:optimize traversal of edges ?
bool
GMap3
::
foreach_dart_of_edge
(
Dart
d
,
FunctorType
&
f
,
unsigned
int
thread
)
{
Dart
dNext
=
d
;
do
{
do
{
if
(
GMap2
::
foreach_dart_of_edge
(
dNext
,
f
,
thread
))
return
true
;
dNext
=
alpha2
(
dNext
);
}
while
(
dNext
!=
d
);
return
false
;
// DartMarkerStore mv(*this,thread); // Lock a marker
// bool found = false; // Last functor return value
// std::list<Dart> darts_list; //Darts that are traversed
// darts_list.push_back(d); //Start with the dart d
// std::list<Dart>::iterator darts;
//
// mv.mark(d);
//
// for(darts = darts_list.begin(); !found && darts != darts_list.end() ; ++darts)
// {
// Dart dc = *darts;
//
// Dart dx = beta0(dc);
// if (!mv.isMarked(dx))
// {
// mv.mark(dx);
// darts_list.push_back(dx);
// }
//
// dx = beta2(dc);
// if (!mv.isMarked(dx))
// {
// mv.mark(dx);
// darts_list.push_back(dx);
// }
//
// dx = beta3(dc);
// if (!mv.isMarked(dx))
// {
// mv.mark(dx);
// darts_list.push_back(dx);
// }
//
// found = f(dc);
// }
//
// return found;
}
bool
GMap3
::
foreach_dart_of_face
(
Dart
d
,
FunctorType
&
f
,
unsigned
int
thread
)
...
...
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