Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Representations/Perception/ObstaclesPercept.cpp

Go to the documentation of this file.
00001 /**
00002  * @file ObstaclesPercept.cpp
00003  *
00004  * Implementation of class ObstaclesPercept.
00005  * @author <a href="mailto:juengel@informatik.hu-berlin.de">Matthias Juengel</a>
00006  */
00007 
00008 #include "ObstaclesPercept.h"
00009 
00010 void ObstaclesPercept::reset(unsigned long frameNumber)
00011 {
00012   this->frameNumber = frameNumber;
00013   numberOfPoints = 0;
00014 
00015   for(int i = 0; i < 2; i++)
00016   {
00017     angleToFreePartOfGoalWasDetermined[i] = false;
00018     angleToFreePartOfGoal[i] = distanceToFreePartOfGoal[i] = 
00019                                     widthOfFreePartOfGoal[i] = 0;
00020   }
00021 }
00022 
00023 void ObstaclesPercept::add(const Vector2<int>& nearPoint, const Vector2<int>& farPoint, bool farPointIsOnBorder)
00024 {
00025   if(numberOfPoints < maxNumberOfPoints)
00026   {
00027     nearPoints[numberOfPoints] = nearPoint;
00028     farPoints[numberOfPoints] = farPoint;
00029     farPointIsOnImageBorder[numberOfPoints++] = farPointIsOnBorder;
00030   }
00031 }
00032 
00033 void ObstaclesPercept::add(const Vector2<int>& nearPoint, const Vector2<int>& farPoint, bool farPointIsOnBorder, ObstacleType obstacleType)
00034 {
00035   if(numberOfPoints < maxNumberOfPoints)
00036   {
00037     nearPoints[numberOfPoints] = nearPoint;
00038     farPoints[numberOfPoints] = farPoint;
00039     farPointIsOnImageBorder[numberOfPoints] = farPointIsOnBorder;
00040     this->obstacleType[numberOfPoints++] = obstacleType;
00041   }
00042 }
00043 
00044 
00045 In& operator>>(In& stream, ObstaclesPercept& obstaclesPercept)
00046 {
00047   stream >> obstaclesPercept.frameNumber;
00048   char temp;
00049 
00050   for(int i = 0; i < 2; i++)
00051   {
00052     stream >> temp;
00053     obstaclesPercept.angleToFreePartOfGoalWasDetermined[i] = temp != 0;
00054     if(temp)
00055       stream >> obstaclesPercept.angleToFreePartOfGoal[i]
00056              >> obstaclesPercept.distanceToFreePartOfGoal[i]
00057              >> obstaclesPercept.widthOfFreePartOfGoal[i];
00058   }
00059 
00060   stream >> obstaclesPercept.numberOfPoints;
00061   for(int j = 0; j < obstaclesPercept.numberOfPoints; j++)
00062   {
00063     stream >> obstaclesPercept.nearPoints[j].x >> obstaclesPercept.nearPoints[j].y;
00064     stream >> obstaclesPercept.farPoints[j].x >> obstaclesPercept.farPoints[j].y;
00065     stream >> temp;
00066     obstaclesPercept.obstacleType[j] = (ObstaclesPercept::ObstacleType)temp;
00067     stream >> temp;
00068     obstaclesPercept.farPointIsOnImageBorder[j] = temp != 0;
00069   }
00070   return stream;
00071 }
00072  
00073 Out& operator<<(Out& stream, const ObstaclesPercept& obstaclesPercept)
00074 {
00075   stream << obstaclesPercept.frameNumber;
00076   for(int i = 0; i < 2; i++)
00077   {
00078     if(obstaclesPercept.angleToFreePartOfGoalWasDetermined[i]) 
00079       stream << char(1) << obstaclesPercept.angleToFreePartOfGoal[i]
00080                         << obstaclesPercept.distanceToFreePartOfGoal[i]
00081                         << obstaclesPercept.widthOfFreePartOfGoal[i];
00082     else 
00083       stream << char(0);
00084   }
00085 
00086   stream << obstaclesPercept.numberOfPoints;
00087   for(int j = 0; j < obstaclesPercept.numberOfPoints; j++)
00088   {
00089     stream << obstaclesPercept.nearPoints[j].x << obstaclesPercept.nearPoints[j].y;
00090     stream << obstaclesPercept.farPoints[j].x << obstaclesPercept.farPoints[j].y;
00091     stream << (char)(obstaclesPercept.obstacleType[j]);
00092     if(obstaclesPercept.farPointIsOnImageBorder[j]) stream << char(1);
00093     else stream << char(0);
00094   }
00095   return stream;
00096 }
00097 
00098 /*
00099  * Change log :
00100  * 
00101  * $Log: ObstaclesPercept.cpp,v $
00102  * Revision 1.1.1.1  2004/05/22 17:25:59  cvsadm
00103  * created new repository GT2004_WM
00104  *
00105  * Revision 1.4  2004/03/01 11:49:05  juengel
00106  * Added obstacle type as parameter for add method and to streaming operators.
00107  *
00108  * Revision 1.3  2004/01/19 14:53:46  dueffert
00109  * all frameNumbers (and not only some of them) are unsigned long now
00110  *
00111  * Revision 1.2  2003/11/12 16:19:35  goehring
00112  * frameNumber added to percepts
00113  *
00114  * Revision 1.1  2003/10/07 10:09:36  cvsadm
00115  * Created GT2004 (M.J.)
00116  *
00117  * Revision 1.1.1.1  2003/07/02 09:40:22  cvsadm
00118  * created new repository for the competitions in Padova from the 
00119  * tamara CVS (Tuesday 2:00 pm)
00120  *
00121  * removed unused solutions
00122  *
00123  * Revision 1.3  2003/06/25 18:42:14  juengel
00124  * Added nearPoints, farPoints[maxNumberOfPoints] and farPointIsOnImageBorder to ObstaclesPercept.
00125  *
00126  * Revision 1.2  2003/05/26 08:12:11  juengel
00127  * Moved angleToFreePartOfGoal from specialPercept to obstaclesPercept.
00128  *
00129  * Revision 1.1  2003/03/10 13:52:09  juengel
00130  * Added ObstaclesPercept
00131  *
00132  */

Generated on Thu Sep 23 19:57:36 2004 for GT2004 by doxygen 1.3.6