00001 #ifndef QUADTREE_COMMON_H
00002 #define QUADTREE_COMMON_H
00003
00004 namespace za_co_codespot
00005 {
00006 namespace datastructures
00007 {
00008
00022 template <typename QuadtreeType1, typename QuadtreeType2>
00023 bool operator==(const QuadtreeType1 & quadtree1, const QuadtreeType2 & quadtree2)
00024 {
00025 if(quadtree1.getWidth() != quadtree2.getWidth())
00026 {
00027 return false;
00028 }
00029
00030 if(quadtree1.getHeight() != quadtree2.getHeight())
00031 {
00032 return false;
00033 }
00034
00035 for(unsigned int x = 0; x < quadtree1.getHeight(); x++)
00036 {
00037 for(unsigned int y = 0; y < quadtree1.getHeight(); y++)
00038 {
00039 if (quadtree1(x, y) != quadtree2(x, y))
00040 {
00041 return false;
00042 }
00043 }
00044 }
00045
00046 return true;
00047 }
00048
00061 template <typename QuadtreeType1, typename QuadtreeType2>
00062 double error(const QuadtreeType1 & quadtree1, const QuadtreeType2 & quadtree2)
00063 {
00064
00065 assert(quadtree1.getWidth() == quadtree2.getWidth());
00066 assert(quadtree1.getHeight() == quadtree2.getHeight());
00067
00068 double error_sum(0.0);
00069
00070 for(unsigned int x = 0; x < quadtree1.getWidth(); x++)
00071 {
00072 for(unsigned int y = 0; y < quadtree1.getHeight(); y++)
00073 {
00074 error_sum += abs((double) quadtree1(x, y) - quadtree2(x, y));
00075 }
00076 }
00077
00078 return error_sum/(quadtree1.getWidth() * quadtree1.getHeight());
00079 }
00080
00081 }
00082 }
00083
00084 #endif //QUADTREE_COMMON_H