summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/space.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/ovision/space.cc')
-rw-r--r--2004/i/nono/src/ovision/space.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/2004/i/nono/src/ovision/space.cc b/2004/i/nono/src/ovision/space.cc
index 8f04ebd..705dd0c 100644
--- a/2004/i/nono/src/ovision/space.cc
+++ b/2004/i/nono/src/ovision/space.cc
@@ -38,20 +38,28 @@ void Space::CreateGnuPlotFile (int y)
FILE *file;
double locY, locX;
+ // Ouverture du fichier
file = fopen("dataY", "w+");
+
+ // Parcours pour tous les pixels verticaux de l'image
for (int i=0; i<296; i++)
{
GetLoc(0, i, locX, locY);
fprintf(file, "%i\t%lf\n", i, locY);
}
+ // Fermeture du fichier
fclose(file);
+ // Ouverture du fichier
file = fopen("dataX", "w+");
+
+ // Parcours de tous les pixels horizontaux
for (int i=0; i<352; i++)
{
GetLoc(0, y, locX, locY);
fprintf(file, "%i\t%lf\n", i, locX);
}
+ // Fermeture du fichier
fclose(file);
}
@@ -76,6 +84,7 @@ Space::AddSetupPoint(int x, int y, int distx, int disty)
void
Space::LoadFromFile()
{
+ // Parcours de tous les points du fichier dist
for (int i=0; i<oconfig->nbDistPoint; i++)
AddSetupPoint(oconfig->tabPoint[i*4+0], oconfig->tabPoint[i*4+1], oconfig->tabPoint[i*4+2], oconfig->tabPoint[i*4+3]);
@@ -96,34 +105,42 @@ Space::FindCoeffLine (double x1, double y1, double x2, double y2, double &a, dou
int
Space::Setup(double a, double b, double c)
{
+ // Assignation des coefficients pour le calcul des y
aY = a;
bY = b;
cY = c;
double a1, b1, a2, b2;
-
+
+ // Cherche les coordonnées de 2 droites
FindCoeffLine (65, 9, 118, 180, a1, b1);
FindCoeffLine (198, 10, 192, 180, a2, b2);
cout << a1 << " " << b1 << " " << a2 << " " << b2 << endl;
+ // Allocation de la mémoire
delete []tabY;
tabY = new double[imgHeight];
delete []tabX;
tabX = new double[imgHeight*imgWidth];
+ // Création du tableau de correspondance pour les x
double diffPix;
double unitPix;
double center;
for (int y=0; y<imgHeight; y++)
{
+ // Calcul de la "longeur réelle" d'un pixel
diffPix = (a2*y+b2) - (a1*y+b1);
unitPix = 100.0f / diffPix;
tabY[y] = unitPix;
+ // Calcul du centre du robot sur l'image en fonction du y
center = a2*y + b2;
// cout << y << "\t" << tabY[y] << endl;
+
+ // Parcours de tous les x de la ligne et calcul de la distance correspondante
for (int x=0; x<imgWidth; x++)
tabX[y*imgWidth + x] = unitPix *(x - center);
}