00001 // -*- c++ -*- 00002 // Copyright 2008 Isis Innovation Limited 00003 // 00004 // This header declares the Map class. 00005 // This is pretty light-weight: All it contains is 00006 // a vector of MapPoints and a vector of KeyFrames. 00007 // 00008 // N.b. since I don't do proper thread safety, 00009 // everything is stored as lists of pointers, 00010 // and map points are not erased if they are bad: 00011 // they are moved to the trash list. That way 00012 // old pointers which other threads are using are not 00013 // invalidated! 00014 00015 #ifndef __MAP_H 00016 #define __MAP_H 00017 #include <vector> 00018 #include <TooN/se3.h> 00019 #include <cvd/image.h> 00020 00021 struct MapPoint; 00022 struct KeyFrame; 00023 00024 struct Map 00025 { 00026 Map(); 00027 inline bool IsGood() {return bGood;} 00028 void Reset(); 00029 00030 void MoveBadPointsToTrash(); 00031 void EmptyTrash(); 00032 00033 std::vector<MapPoint*> vpPoints; 00034 std::vector<MapPoint*> vpPointsTrash; 00035 std::vector<KeyFrame*> vpKeyFrames; 00036 00037 bool bGood; 00038 }; 00039 00040 00041 00042 00043 #endif 00044