owlps/owlps-positioning/area.hh

50 lines
1.3 KiB
C++
Raw Normal View History

#ifndef _AREA_HH_
#define _AREA_HH_
#include <iostream>
#include <string>
#include "point.hh"
using namespace std;
using std::string;
class Area
{
protected:
string area_name;
float x_min;
float x_max;
float y_min;
float y_max;
float z_min;
float z_max;
public:
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) ;
~Area() {};
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 ;
friend ostream &operator<<(ostream &os, const Area &a) ;
};
#endif // _AREA_HH_