vonNeumannNeighborhoodRule.hpp 1.24 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
\file vonNeumannNeighborhoodRule.hpp
\date 13/05/2021
\author Eugene Pin
\version 1
\brief vonNeumannNeighborhoodRule

Contient la classe de la règle de Von Neumann.
**/

#ifndef VONNEUMANNNEIGHBORHOODRULE_HPP
#define VONNEUMANNNEIGHBORHOODRULE_HPP

#include "neighborhoodrule.hpp"
#include "neighborhood.hpp"

17
//! \brief Voisinage de Von Neumann.
18
19
class vonNeumannNeighborhoodRule : public NeighborhoodRule
{
20
21
    mutable NeighborhoodFormat format;
    mutable int current_format_radius;
22
23
24
25
26
27
28
public:
    vonNeumannNeighborhoodRule(int _radius = 1);

    //! \brief Retourne l'ensemble des voisins d'une cellule de position 'pos' sur la grille 'grid' sous la forme d'une structure 'Neighborhood'
    //! \return L'ensemble des voisins de la cellule à 'pos'
    Neighborhood getNeighborhood(const Grid& grid, Coord pos) const;

29
    //! \brief Retourne 'format' de VonNeumann dans un vecteur (méthode dérivée)
30
31
    //! \return Retourne les formats de voisinage possible dans un std::vector.
    std::vector<NeighborhoodFormat> getFormats() const;
32

33
34
35
private:
    void update_format() const;

36
37
38
private:
    //! \brief Rayon du voisinage (en nombre de cellule)
    DEFINE_CONFIGURABLE_PROPERTY(IntegerProperty, radius, "Radius", 1);
39
40
41
};

#endif // VONNEUMANNNEIGHBORHOODRULE_HPP