Commit a8e07738 authored by Maxime Goret's avatar Maxime Goret
Browse files

Implémentation voisinage arbitraire

parent 715ae88c
......@@ -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
};
......
......@@ -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
//}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment