#ifndef space_h #define space_h // space.h - Space class // nono - Programme du robot Efrei Robotique I1-I2 2004 // Copyright (C) 2004 Olivier Gaillard #include #include #include "date/date.h" #include "motor/motor.h" #define TAILLE_MAX 1000 #define POS_ROBOT_ETALONNOGE_X 300 #include "group.h" struct TABLOC { unsigned int height; unsigned int surface; unsigned int locImageX; unsigned int locImageY; unsigned int distance; unsigned int angle; }; /// Classe Vec simplifiant l'utilisation de vecteur 2D class Vec { public: /// Coordonnees du vecteur float x; float y; /// Constructeurs Vec(void); Vec(float x1, float y1, float x2, float y2); Vec(float x, float y); /// Operateur + inline Vec operator+(Vec v) {return Vec(x + v.x, y + v.y);} }; /// Constructeur inline Vec::Vec(void) { } /// Constructeur avec initialisation des coordonnees /// @param vx coordonnees du vecteur /// @param vy coordonnees du vecteur inline Vec::Vec(float vx, float vy) { x = vx; y = vy; } /// Constructeur avec calcul des coordonnees suivant des points /// @param x1 Premier point du vecteur /// @param y1 Premier point du vecteur /// @param x2 Deuxieme point du vecteur /// @param y2 Deuxieme point du vecteur inline Vec::Vec(float x1, float y1, float x2, float y2) { x = x2 - x1; y = y2 - y1; } /// Etalonnage des distances et localisation de la balle class Space { /// tableau d'index des distances uint *indexTabX; uint *indexTabY; /// liste des distances etalonnees std::vector tabLocX; std::vector tabLocY; /// hauteur de l'image uint imgHeight; /// largeur de l'image uint imgWidth; public: /// Permet d'ajouter une distance pour l'etalonnage void SetDist(ZONE zone, unsigned int distance); /// Renvoie la distane en fonction du pixel donne unsigned int GetDistX(unsigned int locImageX, unsigned int locImageY); unsigned int GetDistY(unsigned int locImageY); /// Affiche la liste des distance etalonnees void ShowTab(); /// Cree la liste des distances etalonnees a partir d'image void DoDistTab(); /// Cree le tableau d'index a partir de la liste void DoIndexTab(); /// Donne la position reelle sur la table de la balle void GetPos(Vec *vOrig, Vec *vDir, float angle); // Constructeur Space (uint imgWidth, uint imgHeight); // Destructeur ~Space (); protected: }; #endif // space_h