Program listing for file mechanics/src/collision/native/SpaceFilter_impl.hpp

Program listing for file mechanics/src/collision/native/SpaceFilter_impl.hpp#

 1#ifndef SpaceFilter_impl_hpp
 2#define SpaceFilter_impl_hpp
 3
 4#include <map>
 5
 6#include <NSLawMatrix.hpp>
 7#include <SpaceFilter.hpp>
 8#include "DiskMovingPlanR.hpp"
 9#include <boost/numeric/ublas/symmetric.hpp>
10#include <boost/unordered_set.hpp>
11#include <boost/throw_exception.hpp>
12#include <boost/functional/hash.hpp>
13
14class FMatrix  : public ublas::matrix < FTime, ublas::column_major,
15                                         std::vector<FTime> >
16{
17  ACCEPT_SERIALIZATION(FMatrix);
18};
19
20class Hashed : public std::enable_shared_from_this<Hashed>
21{
22protected:
23
24  ACCEPT_SERIALIZATION(Hashed);
25
26  Hashed() {};
27
28public:
29  SP::DynamicalSystem body;
30  int i;
31  int j;
32  int k;
33  Hashed(SP::DynamicalSystem body, int i, int j, int k = 0) :
34    body(body), i(i), j(j), k(k) {};
35
36  Hashed(int i, int j, int k = 0)
37    : i(i), j(j), k(k) {};
38
39  ~Hashed() {};
40
41};
42
43class space_hash : public boost::unordered_multiset < SP::Hashed,
44                                                       boost::hash<SP::Hashed> >
45{
46  ACCEPT_SERIALIZATION(space_hash);
47};
48
49
50typedef std::pair<double, double> CircleCircleRDeclared;
51typedef std::pair<double, double> DiskDiskRDeclared;
52typedef std::array<double, 6> DiskPlanRDeclared;
53
54
55class CircleCircleRDeclaredPool : public std::map<CircleCircleRDeclared, SP::CircularR>
56{
57  ACCEPT_SERIALIZATION(CircleCircleRDeclaredPool);
58};
59
60
61class DiskDiskRDeclaredPool : public std::map<DiskDiskRDeclared, SP::CircularR>
62{
63  ACCEPT_SERIALIZATION(DiskDiskRDeclaredPool);
64};
65
66
67class DiskPlanRDeclaredPool : public std::map<DiskPlanRDeclared, SP::DiskPlanR>
68{
69  ACCEPT_SERIALIZATION(DiskPlanRDeclaredPool);
70};
71
72#endif