Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Romain De Laage De Bellefaye
LO21-projet
Commits
715ae88c
Commit
715ae88c
authored
Jun 05, 2021
by
Maxime Goret
Browse files
Modif Rayon Voisinage
parent
84f73df5
Pipeline
#79236
canceled with stage
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
includes/voisinage.h
View file @
715ae88c
...
...
@@ -81,16 +81,16 @@ public :
class
RegleVoisinageNeumann
:
public
RegleVoisinage
{
public:
void
setNbVoisins
(
unsigned
int
r
);
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
);
//
void setNbVoisins(unsigned int r);
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
unsigned
int
rayon
);
};
class
RegleVoisinageMoore
:
public
RegleVoisinage
{
public:
void
setNbVoisins
(
unsigned
int
r
);
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
);
//
void setNbVoisins(unsigned int r);
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
unsigned
int
rayon
);
};
...
...
src/voisinage.cpp
View file @
715ae88c
...
...
@@ -17,23 +17,23 @@ void RegleVoisinage::setNbVoisins(unsigned int r) {
}
}
void
RegleVoisinageNeumann
::
setNbVoisins
(
unsigned
int
r
)
{
if
(
r
==
1
)
{
// voisinage de von Neumann
nbVoisin
=
4
;
}
else
{
// voisiange de von Neumann avec un rayon
nbVoisin
=
2
*
r
*
(
1
+
r
);
}
//
void RegleVoisinageNeumann::setNbVoisins(unsigned int r) {
//
if (r == 1) { // voisinage de von Neumann
//
nbVoisin = 4;
//
}
//
else { // voisiange de von Neumann avec un rayon
//
nbVoisin = 2 * r * (1 + r);
//
}
}
void
RegleVoisinageMoore
::
setNbVoisins
(
unsigned
int
r
)
{
if
(
r
==
1
)
{
// voisinage de Moore
nbVoisin
=
8
;
}
else
{
// voisiange de Moore avec un rayon
nbVoisin
=
pow
((
2
*
r
+
1
),
2
)
-
1
;
}
}
//
void RegleVoisinageMoore::setNbVoisins(unsigned int r) {
//
if (r == 1) { // voisinage de Moore
//
nbVoisin = 8;
//
}
//
else { // voisiange de Moore avec un rayon
//
nbVoisin = pow((2 * r + 1), 2) - 1;
//
}
//
}
void
RegleVoisinage
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
...
...
@@ -52,13 +52,21 @@ void RegleVoisinage::calculVoisinage(Voisinage& v, const Reseau& r) {
}
}
void
RegleVoisinageNeumann
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
void
RegleVoisinageNeumann
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
unsigned
int
rayon
)
{
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
int
nb
=
0
;
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
if
(
rayon
==
1
)
{
// voisinage de von Neumann
nbVoisin
=
4
;
}
else
{
// voisiange de von Neumann avec un rayon
nbVoisin
=
2
*
r
*
(
1
+
r
);
}
for
(
int
i
=
0
;
i
<
v
.
r
;
i
++
)
{
for
(
int
j
=
0
;
j
<
v
.
r
;
j
++
)
{
...
...
@@ -115,7 +123,7 @@ void RegleVoisinageNeumann::calculVoisinage(Voisinage& v, const Reseau& r) {
}
}
void
RegleVoisinageMoore
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
){
void
RegleVoisinageMoore
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
unsigned
int
rayon
){
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
int
nb
=
0
;
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
...
...
@@ -123,6 +131,14 @@ void RegleVoisinageMoore::calculVoisinage(Voisinage& v, const Reseau& r){
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
if
(
rayon
==
1
)
{
// voisinage de Moore
nbVoisin
=
8
;
}
else
{
// voisiange de Moore avec un rayon
nbVoisin
=
pow
((
2
*
r
+
1
),
2
)
-
1
;
}
for
(
int
i
=
1
;
i
<=
v
.
r
;
i
++
)
{
for
(
int
j
=
1
;
j
<=
i
;
j
++
)
{
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[(
abs
+
i
)
%
hauteur
][(
ord
+
j
)
%
largeur
];
...
...
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