summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/skittle.hh
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/see/skittle.hh')
-rw-r--r--2005/i/robert/src/ovision/see/skittle.hh22
1 files changed, 13 insertions, 9 deletions
diff --git a/2005/i/robert/src/ovision/see/skittle.hh b/2005/i/robert/src/ovision/see/skittle.hh
index ebdeb6f..fb5ff77 100644
--- a/2005/i/robert/src/ovision/see/skittle.hh
+++ b/2005/i/robert/src/ovision/see/skittle.hh
@@ -42,38 +42,42 @@ class Skittle
Img *img_;
/// Composante principale
double pcX_, pcY_;
- /// Position
+ /// Enum pos
+ enum Pos {up, down, farAway, error};
+ /// Courbure
double bend_;
+ /// Position de la bande réfléchissante
+ Pos reflectBand_;
public:
- /// debout/couché/erreur
- enum BendType {up, down, error};
/// Constructeur
Skittle (Img *img, Segm *segm);
/// Destructeur
~Skittle (void);
/// Analyse d'une zone
- bool analyse (Zone &zone, std::vector<Zone> &listReflectBand);
+ bool analyse (const Zone &zone, const std::vector<Zone> &listReflectBand);
/// Affiche les infos sur la quille
void show () const;
private:
/// Recherche de la composante principale
- void pca (Zone &zone);
+ void pca (const Zone &zone);
/// Recherche de du côté de la courbure
- BendType bend (Zone &zone);
+ Pos bend (const Zone &zone);
/// Utilisé pour la recherche de la courbure, cherche le point le plus haut
int climb (const int startX, const int startY, const int color);
/// Vérifie qu'un catadiopre est à proximité
- int isReflectBand (Zone &zone, std::vector<Zone> &listReflectBand);
+ Pos whereIsReflectBand (const Zone &zone, const std::vector<Zone> &listReflectBand);
/// Renvoie le minimum en fonction d'une bordure
inline int minWithBorder (int n, int min) {return n > min ? n : min;}
/// Renvoie le maximum en fonction d'une bordure
inline int maxWithBorder (int n, int max) {return n < max ? n : max;}
/// Distance cartésienne
- inline double dist (double x1, double x2, double y1, double y2) {return sqrt (x1*x2 + y1*y2);}
+ inline const double dist (const double x1, const double x2, const double y1, const double y2)
+ {return sqrt (x1*x2 + y1*y2);}
/// Distance orthogonale à une droite
- inline double orthoDist (double v1x, double v1y, double v2x, double v2y)
+ inline const double orthoDist (const double v1x, const double v1y,
+ const double v2x, const double v2y)
{return ((v1x*v2y - v2x*v1y) / sqrt (v2x*v2x + v2y*v2y));}
};