Urbanisme  1.3.0
Projet visant à l'optimisation du placement de routes sur une surface. https://flodavid.github.io/Urbanisme
Fonctions membres publiques | Fonctions membres publiques statiques | Attributs protégés | Amis | Liste de tous les membres
Référence de la classe Field

Classe représentant la surface -le terrain- et contenant les opérations que l'on effectue sur celui-ci. L'état d'une instance de cette classe à la fin de l'algorithme représente une solution trouvée après la recherche. On peut donc avoir plusieurs Field lors d'une exécution. Plus de détails...

#include <field.h>

Graphe d'héritage de Field:
FieldEvaluation

Fonctions membres publiques

unsigned get_width () const
 
unsigned get_height () const
 
std::list< Coordinates > & get_insOuts ()
 
unsigned getNbParcels () const
 
void set_width (unsigned width)
 
void set_height (unsigned height)
 
void add_road (const Coordinates &coords)
 
void add_road (unsigned col, unsigned row)
 
bool tryAdd_in_out (unsigned col, unsigned row)
 
void add_undefined (unsigned col, unsigned row)
 
State at (const Coordinates &pos) const
 
State operator[] (const Coordinates &pos) const
 
Fieldoperator= (const Field &other)
 
 Field (unsigned width, unsigned height)
 
 Field (const Field &other)
 
void deleteOldMatrix ()
 
void resizeWithDimensions ()
 
void addRoads (std::list< Coordinates > *roads, unsigned serveDistance)
 
void removeRoads (std::list< Coordinates > *roads, unsigned serveDistance)
 
bool tryAdd_in_out (const Coordinates &coords)
 
void add_undefined (const Coordinates &coords)
 
void show_ins_and_outs () const
 
std::ostream & print (std::ostream &out) const
 
bool contains (int x, int y) const
 
bool contains (const Coordinates &coord) const
 
bool nextCoordinates (Coordinates *coord) const
 
void createExample ()
 createExample Plus de détails...
 

Fonctions membres publiques statiques

static Coordinatesfirst ()
 begin Plus de détails...
 

Attributs protégés

unsigned nb_cols
 nb_cols Nombre de colonnes de la surface
 
unsigned nb_rows
 nb_rows Nombre de lignes de la surface
 
std::list< Coordinatesins_outs
 ins_outs Liste des entrées-sorties de la surface
 
State ** parcels
 Matrice d'états des cellules.
 

Amis

std::ostream & operator<< (std::ostream &out, const Field &field)
 
void generateInsAndOuts (unsigned nb)
 
std::list< Coordinates > * getNeighbourRoads (const Coordinates &coord) const
 
std::list< Coordinates > * getCloseUnusableParcels (const Coordinates &coord, unsigned servingDistance) const
 
std::list< Coordinates > * getCloseParcels (const Coordinates &coord, unsigned maxDist) const
 
std::list< Coordinates > * getCloseRoads (const Coordinates &coord, unsigned maxDist) const
 
std::list< Coordinates > * getServingRoads (const Coordinates &coord, unsigned servingDistance) const
 
bool hasServingRoad (const Coordinates &coord, unsigned servingDistance) const
 
void setUsables (unsigned servingDistance)
 
void resetUsables (unsigned servingDistance)
 
void updateUsables (unsigned servingDistance)
 

Description détaillée

Classe représentant la surface -le terrain- et contenant les opérations que l'on effectue sur celui-ci. L'état d'une instance de cette classe à la fin de l'algorithme représente une solution trouvée après la recherche. On peut donc avoir plusieurs Field lors d'une exécution.

Documentation des constructeurs et destructeur

Field::Field ( unsigned  width,
unsigned  height 
)

Constructeur de la classe

Paramètres
widthLargeur à définir de la surface
heightHauteur à définir de la surface

Constructeurs et destructeurs

Field::Field ( const Field other)

Constructeur par recopie de la classe Field

Paramètres
otherInstance à recopier

Documentation des fonctions membres

void Field::add_road ( const Coordinates coords)
inline

Ajoute une route à partir de coordonnées

Paramètres
coordsCoordonnées de la future route
void Field::add_road ( unsigned  col,
unsigned  row 
)
inline

Ajoute une route à partir de coordonnées

Paramètres
colColonne de la route
rowLigne de la route
void Field::add_undefined ( const Coordinates coords)

Supprime l'état de la parcelle

Paramètres
coords
void Field::add_undefined ( unsigned  col,
unsigned  row 
)
inline

Supprime l'état de la parcelle

Paramètres
col
row
void Field::addRoads ( std::list< Coordinates > *  roads,
unsigned  serveDistance 
)

Ajoute une liste de routes

Paramètres
roadsListe de coordonnées des routes à ajouter
serveDistanceDistance de desserte des routes, utile pour mettre à jour les parcelles exploitables
Voir également
on pourrait améliorer, en mettant à jour seulement les parcelles proches des routes ajoutées
State Field::at ( const Coordinates pos) const
inline

=== Operators === Retourne la parcelle de la surface aux coordonnées passées en paramètre

Paramètres
posCoordonnées de la parcelle
Renvoie
L'état de la parcelle à la position des coordonnées, un State
bool Field::contains ( int  x,
int  y 
) const

=== Fonctions sur les coordonnées === Effectue un test d'appartenance des coordonnées à la matrice

Paramètres
xabscisse de la coordonnée
yordonnée de la coordonnée
Renvoie
true si la coordonnée appartient à la matrice

=== Fonctions sur les coordonnées ===///

bool Field::contains ( const Coordinates coord) const

Effectue un test d'appartenance des coordonnées à la matrice

Paramètres
coordCoordonnées de la position
Renvoie
true si la coordonnée appartient à la matrice
void Field::createExample ( )

createExample

Test:
Utile seulement pour les tests

Autres méthodes utiles

void Field::deleteOldMatrix ( )

Setters

static Coordinates& Field::first ( )
inlinestatic

begin

Renvoie
un itérateur constant sur la première parcelle du Field
Voir également
end
Renvoie
un itérateur constant sur la dernière parcelle du Field
Voir également
begin
Renvoie
un itérateur sur la première parcelle du Field
Voir également
end
Renvoie
un itérateur sur la dernière parcelle du Field
Voir également
Retourne la première coordonée de la matrice, elle peut ensuite être modifée pour servir d'itérateur à l'aide de nextCoordinates()
Renvoie
une référence, non constante, sur la première coordonnée de la matrice
void Field::generateInsAndOuts ( unsigned  nb)

=== Méthodes générales === Crée aléatoirement des entrées et sorties

Paramètres
nbnombre d'entrées et sorties à générer

=== Méthodes générales ===/

unsigned Field::get_height ( ) const
inline

Accesseur sur le nombre de lignes -la hauteur- de la surface

Renvoie
La hauteur de la surface
std::list<Coordinates>& Field::get_insOuts ( )
inline

Accesseur sur la liste des entrées et sorties

Renvoie
unsigned Field::get_width ( ) const
inline

Accesseur sur le nombre de colonnes -la largeur- de la surface

Renvoie
La largeur de la surface
std::list< Coordinates > * Field::getCloseParcels ( const Coordinates coord,
unsigned  maxDist 
) const

Recherche des parcelles qui sont proches de la position

Paramètres
coordCoordonnées de la position
maxDistDistance maximale entre la parcelle et la position
Renvoie
une liste de parcelles proches de la position donnée
std::list< Coordinates > * Field::getCloseRoads ( const Coordinates coord,
unsigned  maxDist 
) const

Recherche des routes qui sont proches de la position

Paramètres
coordCoordonnées de la position
maxDistDistance maximale entre la route et la position
Renvoie
une liste de routes proches de la position donnée
std::list< Coordinates > * Field::getCloseUnusableParcels ( const Coordinates coord,
unsigned  servingDistance 
) const

Recherche des parcelles qui serait desservies grâce au passage de la parcelle en route

Paramètres
coordCoordonnées de la parcelle
servingDistanceDistance à laquelle les routes rendent les parcelles utilisables
Renvoie
une liste de parcelles qui deviendraient utilisables si la parcelle devenait une route
unsigned Field::getNbParcels ( ) const
inline

Donne le nombre de parcelles de la surface

Renvoie
Le nombre de parcelles, nombre de ligne facteur nombre de colonnes, un entier non signé
std::list< Coordinates > * Field::getNeighbourRoads ( const Coordinates coord) const

Recherche des parcelles qui sont concomitantes à la cellule

Paramètres
coordCoordonnées de la parcelle
Renvoie
une liste de parcelle adjacentes à la cellule Recherche des portions de routes qui sont concomitantes à la parcelle courante
Paramètres
coordCoordonnées de la parcelle
Renvoie
une liste de routes adjacentes à la parcelle
std::list< Coordinates > * Field::getServingRoads ( const Coordinates coord,
unsigned  servingDistance 
) const

Recherche des portions de routes qui peuvent désservir la parcelle

Paramètres
coordCoordonnées de la parcelle à desservir
servingDistanceDistance maximale à laquelle un route peut desservir une parcelle
Renvoie
une liste de routes distance inférieure ou égale à la distance de desserte

On vérifie ((2.servingDistance)+1)² parcelles, alors qu'on pourrait en vérifier moins

bool Field::hasServingRoad ( const Coordinates coord,
unsigned  servingDistance 
) const

Vérifie que la parcelle a un voisin

Paramètres
coordCoordonnées de la parcelle à desservir
servingDistanceDistance de desserte des routes
Renvoie
vrai si la parcelle est desservie par au moins une route

On vérifie ((2.serve_dist)+1)² parcelles, alors qu'on pourrait en vérifier moins

bool Field::nextCoordinates ( Coordinates coord) const

Modifie la coordonnée en entrée pour obtenir celle qu'elle précède Agit comme une itération sur l'ensemble des coordonnées de la surface

Paramètres
coordCoordonnée courante, va être modifiée pour devenir sa "suivante". Elle est non modifiée si il n'y a pas de suivante.
Renvoie
vrai si il y a une coordonnées, faux si on est à la fin ou en dehors de la surface
Field& Field::operator= ( const Field other)
inline

Opérateur = d'affectation

Paramètres
otherInstance à recopier
State Field::operator[] ( const Coordinates pos) const
inline

Opérateur [] avec des coordonnées sur la surface, retourne la parcelle de la surface aux coordonnées passées en paramètre

Paramètres
posCoordonnées de la parcelle
Renvoie
L'état de la parcelle à la position des coordonnées, un State
std::ostream & Field::print ( std::ostream &  out) const

Imprime dans un flux les informations de l'instance

Paramètres
outFlux dans lequel on imprime les informations
Renvoie
Le flux en entrée sur lequel on a imprimé les informations
void Field::removeRoads ( std::list< Coordinates > *  roads,
unsigned  serveDistance 
)

Retire une liste de routes

Paramètres
roadsListe de coordonnées des routes à retirer
serveDistanceDistance de desserte des routes, utile pour mettre à jour les parcelles exploitables
void Field::resetUsables ( unsigned  servingDistance)

Met à jour les parcelles dans le voisinage d'une route comme étant exploitables

Paramètres
servingDistanceDistance maximale du voisinage
void Field::resizeWithDimensions ( )

Redéfinit la taille de la matrice d'états selon le nombre de lignes et de colonnes contenues dans la classe. On utilise la fonction resize(). Attention, les données contenues dans le vecteur peuvent être modifiées

void Field::set_height ( unsigned  height)
inline

Mutateur sur le nombre de lignes -la hauteur- de la surface

Paramètres
heightLa nouvelle hauteur de la surface
void Field::set_width ( unsigned  width)
inline

Mutateur sur le nombre de colonnes -la largeur- de la surface

Paramètres
widthLa nouvelle largeur de la surface
void Field::setUsables ( unsigned  servingDistance)

Définit les parcelles dans le voisinage d'une route comme étant exploitables

Paramètres
servingDistanceDistance maximale du voisinage
void Field::show_ins_and_outs ( ) const

Impression sur la sortie standard des entrées et sorties de la surface

Affichage

bool Field::tryAdd_in_out ( const Coordinates coords)

Ajoute une entrée/sortie à partir de coordonnées

Paramètres
coordsCoordonnées de l'E/S
bool Field::tryAdd_in_out ( unsigned  col,
unsigned  row 
)
inline

Ajoute une entrée/sortie à partir de coordonnées

Paramètres
colColonne de l'E/S
rowLigne de l'E/S
void Field::updateUsables ( unsigned  servingDistance)

Met à jour les parcelles dans le voisinage d'une route comme étant exploitables

Paramètres
servingDistanceDistance maximale du voisinage

Documentation des fonctions amies et associées

std::ostream& operator<< ( std::ostream &  out,
const Field field 
)
friend

Surcharge de l'opérateur << de sortie sur flux

Paramètres
outFlux dans lequel on imprime les informations
fieldSurface que l'on souhaite imprimer
Renvoie
Le flux en entrée sur lequel on a imprimé les informations de la surface passée en entrée

La documentation de cette classe a été générée à partir des fichiers suivants :