#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 #define POS_ROBOT_ETALONNOGE_X 300 #include "group.h" #include "oconfig.h" struct SETUP_POINT { int x, y; int distx, disty; }; /// Etalonnage des distances et localisation de la balle class Space { /// Classe config OConfig *oconfig; /// tableau d'index des distances uint *tabX; uint *tabY; /// liste des distances etalonnees std::vector setupTab; /// hautdddeur de l'image int imgHeight; /// largeur de l'image int imgWidth; /// coeff pour l'approximation de la profondeur double coefY[NB_POINTS]; /// coeff pour l'approximation de l'horizontal double coefX[NB_POINTS]; public: // Constructeur Space (int width, int height); // Destructeur ~Space (); /// Position d'un objet dans le referentiel du robot void GetLoc(int locImgX, int locImgY, int &locX, int &locY); void GetLoc(int locImgX, int locImgY, double &locX, double &locY); /// Ajoute un point pour l'etalonnage void AddSetupPoint(int x, int y, int distx, int disty); /// Chargement des points a partir d'un fichier void LoadFromFile(); /// Etalonnage des distances int Setup(); void Setup(double aX, double bX, double cX, double aY, double bY, double cY); protected: /// Calcul du determinant double Determinant33(double *matrix); double Determinant(double *matrix, int n); double CoeffDeterminant (double *matrix, int i, int n); /// Calcul du determinant caracteristique double CaracteristicDeterminant(double *matrix, double *endMat, int numCol); /// Donne la position reelle sur la table de la balle void GetPos(int locX, int locY, int posRobotX, int posRobotY, double angleRobot, int &posX, int &posY); int BestFitDoTab(double *mat, double *endMat); }; #endif // space_h