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
a8e07738
Commit
a8e07738
authored
Jun 05, 2021
by
Maxime Goret
Browse files
Implémentation voisinage arbitraire
parent
715ae88c
Changes
2
Hide whitespace changes
Inline
Side-by-side
includes/voisinage.h
View file @
a8e07738
...
...
@@ -15,6 +15,7 @@
#include
<string>
#include
<vector>
using
namespace
std
;
class
Voisinage
{
...
...
@@ -96,9 +97,11 @@ public:
class
RegleVoisinageArbitraire
:
public
RegleVoisinage
{
//définit la règle pour le voisinage arbitraire
public:
Voisinage
getVoisinage
(
const
Reseau
&
reseau
,
Coordonnees
position
)
const
;
//à compléter
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
);
vector
<
Coordonnees
>
coordonnees
;
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
,
const
Coordonnes
co
)
const
;
// Calcul du voisinage en fonction de la cellule centre
coordonnees
getVoisinage
(
const
Reseau
&
r
);
// Dééfinition des coordonnées relatives pour le calcul du voisinage
};
...
...
src/voisinage.cpp
View file @
a8e07738
...
...
@@ -198,10 +198,27 @@ Voisinage::~Voisinage() {
voisinage
.
clear
();
}
Voisinage
RegleVoisinageArbitraire
::
getVoisinage
(
const
Reseau
&
reseau
,
Coordonnees
position
)
const
{}
void
RegleVoisinageArbitraire
::
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
&
r
)
{
void
calculVoisinage
(
Voisinage
&
v
,
const
Reseau
r
,
Coordonnees
co
){
v
.
voisinage
=
std
::
vector
<
Cellule
*>
();
unsigned
int
abs
=
v
.
celluleCentre
->
abs
;
unsigned
int
ord
=
v
.
celluleCentre
->
ord
;
unsigned
int
hauteur
=
r
.
getHauteur
();
unsigned
int
largeur
=
r
.
getLargeur
();
while
(
nb
=
0
,
nb
<
coordonnees
.
size
(),
nb
++
){
v
.
voisinage
[
nb
]
=
&
r
.
getReseau
()[
abs
-
co
[
nb
].
getx
()]
[
ord
-
co
[
nb
].
gety
()];
}
}
coordonnes
RegleVoisinageArbitraire
::
getVoisinage
(
const
Reseau
&
r
)
{
vector
<
Coordonnees
>
coordonnees
;
Cellule
*
cellulecentre
=
getCelluleCentre
();
for
(
int
k
=
0
;
k
<
nbVoisin
;
k
++
)
{
unsigned
int
i
,
j
;
...
...
@@ -213,7 +230,16 @@ void RegleVoisinageArbitraire::calculVoisinage(Voisinage &v, const Reseau& r) {
if
(
i
>=
r
.
getHauteur
()
||
j
>=
r
.
getLargeur
())
cout
<<
"Coordonnees incorrectes !
\n
"
;
}
if
(
i
<
r
.
getHauteur
()
&&
j
<
r
.
getLargeur
())
v
.
voisinage
[
k
]
=
&
r
.
getReseau
()[
i
][
j
];
if
(
i
<
r
.
getHauteur
()
&&
j
<
r
.
getLargeur
())
{
coordonnees
[
k
].
x
=
cellulecentre
.
abs
-
i
;
coordonnees
[
k
].
y
=
cellulecentre
.
ord
-
j
;
}
}
return
coordonnees
;
// While (!utilisateur clique sur bouton valider){
//recuprer abs et ord de Cellule slectionne;
//rentrer la diffrence des coordonnes dans le vecteur co
//}
}
Write
Preview
Supports
Markdown
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