37 #ifndef DEMOS_KOULES_SIMULATOR_
38 #define DEMOS_KOULES_SIMULATOR_
40 #include "KoulesConfig.h"
41 #include <ompl/control/StatePropagator.h>
42 #include <boost/tuple/tuple.hpp>
43 #include <boost/tuple/tuple_comparison.hpp>
58 typedef boost::tuple<double, unsigned int, unsigned int> CollisionEvent;
61 typedef std::priority_queue<CollisionEvent, std::vector<CollisionEvent>,
62 std::greater<CollisionEvent> > CollisionEventQueue;
66 void initCollisionEvents(
void);
69 double wallCollideEvent(
unsigned int i,
int dim);
71 void elasticCollision(
unsigned int i,
unsigned int j);
74 void computeCollisionEvent(
unsigned int i,
unsigned int j);
77 void advance(
double t);
80 void markAsDead(
unsigned int i);
87 unsigned int numDimensions_;
89 unsigned int numKoules_;
91 std::vector<double> qcur_;
93 std::vector<double> qnext_;
95 std::vector<bool> dead_;
101 CollisionEventQueue collisionEvents_;
Definition of an abstract control.
Definition of an abstract state.