Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef Unordered_map_h
00009 #define Unordered_map_h
00010
00011 #include <iostream>
00012 #include <vector>
00013 #include <boost/unordered_map.hpp>
00014 #include <eigen3/Eigen/Dense>
00015 using namespace std;
00016 using namespace boost;
00017 using namespace Eigen;
00018
00019 class unordered_map_voxel
00020 {
00021 public:
00022 unordered_map_voxel(double x,double y,double z,double resolution):
00023 _resolution(resolution)
00024 {
00025 if(x>=0)
00026 _x= x/resolution +1;
00027 else
00028 _x = x/resolution -1;
00029 if(y>=0)
00030 _y = y/resolution +1;
00031 else
00032 _y = y/resolution -1;
00033 if(z>=0)
00034 _z = z/resolution +1;
00035 else
00036 _z = z/resolution -1;
00037 }
00038 unordered_map_voxel(int x,int y,int z):
00039 _x(x),
00040 _y(y),
00041 _z(z)
00042 {}
00043
00044
00045 bool operator== (const unordered_map_voxel& v) const
00046 {
00047 return _x == v._x && _y == v._y && _z == v._z;
00048 }
00049
00050 const int x() const
00051 {
00052 return _x;
00053 }
00054 const int y() const
00055 {
00056 return _y;
00057 }
00058 const int z() const
00059 {
00060 return _z;
00061 }
00062 private:
00063 double _resolution;
00064 int _x;
00065 int _y;
00066 int _z;
00067 };
00068
00069 size_t hash_value(const unordered_map_voxel &v);
00070
00071
00072 class un_key
00073 {
00074 public:
00075 int cout;
00076 double c;
00077 double p;
00078 vector<int> vec_index_point;
00079 Vector3d u;
00080 VectorXcd v1;
00081 VectorXcd v3;
00082 Matrix<double,9,1> vector_9D;
00083 Matrix3d matS;
00084 };
00085
00086
00087 class eigen_sort
00088 {
00089 public:
00090 eigen_sort()
00091 {
00092
00093 }
00094 eigen_sort(double value,VectorXcd vector):
00095 eigen_value(value),
00096 eigen_vector(vector)
00097 {}
00098
00099 bool operator < (const eigen_sort &e) const
00100 {
00101 return eigen_value < e.eigen_value;
00102 }
00103 double eigen_value;
00104 VectorXcd eigen_vector;
00105 };
00106 #endif