2008-04-11 10:11:29 +02:00
|
|
|
#ifndef _AREA_HH_
|
|
|
|
#define _AREA_HH_
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <string>
|
2008-05-29 10:48:05 +02:00
|
|
|
#include "point.hh"
|
2008-04-11 10:11:29 +02:00
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
using std::string;
|
|
|
|
|
|
|
|
class Area
|
|
|
|
{
|
|
|
|
protected:
|
2008-04-15 12:19:15 +02:00
|
|
|
string area_name;
|
|
|
|
float x_min;
|
|
|
|
float x_max;
|
|
|
|
float y_min;
|
|
|
|
float y_max;
|
|
|
|
float z_min;
|
|
|
|
float z_max;
|
2008-04-11 10:11:29 +02:00
|
|
|
|
|
|
|
public:
|
2008-05-29 10:48:05 +02:00
|
|
|
Area(const string &_name = "No name", const float &_x1 = 0, const float &_x2 = 0, const float &_y1 = 0, const float &_y2 = 0, const float &_z1 = 0, const float &_z2 = 0) ;
|
|
|
|
Area(const Area &a) ;
|
2008-04-15 12:19:15 +02:00
|
|
|
~Area() {};
|
2008-05-29 10:48:05 +02:00
|
|
|
|
|
|
|
bool containsPoint(const Point &p)const ;
|
|
|
|
|
|
|
|
string getName()const { return area_name ; } ;
|
|
|
|
float getXmin()const { return x_min; } ;
|
|
|
|
float getXmax()const { return x_max; } ;
|
|
|
|
float getYmin()const { return y_min; } ;
|
|
|
|
float getYmax()const { return y_max; } ;
|
|
|
|
float getZmin()const { return z_min; } ;
|
|
|
|
float getZmax()const { return z_max; } ;
|
|
|
|
|
|
|
|
void setName(const string &_name) { area_name = _name ; } ;
|
|
|
|
void setXmin(const float &v) { x_min = v; } ;
|
|
|
|
void setXmax(const float &v) { x_max = v; } ;
|
|
|
|
void setYmin(const float &v) { y_min = v; } ;
|
|
|
|
void setYmax(const float &v) { y_max = v; } ;
|
|
|
|
void setZmin(const float &v) { z_min = v; } ;
|
|
|
|
void setZmax(const float &v) { z_max = v; } ;
|
|
|
|
|
GuiNuMo : gestion topologie
server.{hh,cc} :
* Utilisation d'une map plutôt que d'une multimap pour stocker la liste
des pièces. Conséquence : les noms des zones doivent être uniques, il
faut donc numéroter les zones des pièces composites (par exemple
« Couloir N1 A » et « Couloir N1 B »).
* Ajout de la fonction inWhichAreas() qui permet d'obtenir la liste des
zones auxquelles appartient un point.
* Modification de la fonction makeWaypointDistancesFromFile() (renommée
makeWaypointListFromFile()) de manière à ce qu'elle calcule la matrice
des distances entre points de passage (lecture d'une liste de points).
Abandon du format décrivant les points en visibilité (voir le fichier
cfg/distances.csv, supprimé à cette révision), puisque nous nous
servons des points de passage et de la description des zones pour
calculer les liens entre points. RESTE À FAIRE : prise en comppte de
la topologie dans le calcul de distance.
* Ajout de deux fonctions areaConnection() qui permettent de récupérer
la liste des points de passage d'une zone, ou faisant l'intersection
entre deux zones.
* Ajout de la fonction distanceTopology, qui calcule la distance entre
deux points en tenant compte de la topologie (zones et points de
passage entre elles).
* Ajout de la fonction makeReferencePointDistances(), qui calcule les
distances entre points de référence, en tenant compte de la
topologie.
* Ajout de la fonction point_vector_idx(), semblable à point_tab_idx()
mais pour un vector<Point>.
referencepoint.{hh,cc} :
* Ajout de l'operator de cast en Point (operator Point()).
area.{hh,cc} :
* Ajout de l'operator==(Area).
cfg/distances.csv
* Suppression de ce fichier obsolète.
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@47 785a6c6c-259e-4ff1-8b91-dc31627914f0
2008-06-25 16:19:07 +02:00
|
|
|
bool operator==(const Area &a)const ;
|
2008-05-29 10:48:05 +02:00
|
|
|
friend ostream &operator<<(ostream &os, const Area &a) ;
|
2008-04-11 10:11:29 +02:00
|
|
|
};
|
|
|
|
|
2008-05-29 10:48:05 +02:00
|
|
|
#endif // _AREA_HH_
|