00001 #ifndef RIDE_MULTI_PATH_HPP
00002 #define RIDE_MULTI_PATH_HPP
00003
00004 #include <vector>
00005 #include "ride/interval.hpp"
00006
00007
00008
00009
00010 namespace jafar {
00011
00012 namespace ride {
00013
00018 class SingleTrajectory {
00019
00020 private :
00021
00022 int id;
00023 std::vector<Slot> trajectory;
00024 double cost;
00025 int size;
00026
00027 public :
00028
00029 SingleTrajectory(int _id);
00030 ~SingleTrajectory();
00031
00032 int getId() const;
00033 std::vector<Slot> getTraj() const;
00034 Slot getPos(int index) const;
00035 Slot getFinalPos() const;
00036 double getCost() const;
00037 void setCost(double _cost);
00038 void computeCost();
00039 void add(Slot cell);
00040 void clear();
00041 int getSize() const;
00042 void setFail();
00043
00044 };
00045
00050 class MultiTrajectory {
00051 private :
00052 std::vector<SingleTrajectory> multiTraj;
00053 int size;
00054 public :
00055 MultiTrajectory();
00056 ~MultiTrajectory();
00057 void addTrajectory(SingleTrajectory traj);
00058 void setTrajectory(int index, SingleTrajectory traj);
00059 SingleTrajectory getTrajectory(int id) const;
00060 std::vector<Slot> getMultiPos(int index) const;
00061 std::vector<Slot> getFinalPos() const;
00062 bool isEnded(int index) const;
00063 int getFinalStep() const;
00064 int getSize() const;
00065 void setFail();
00066 void setFail(std::vector<Slot> const& fail);
00067 void setFail(std::vector<Slot> const& init, std::vector<Slot> const& goal);
00068 };
00069
00077 MultiTrajectory computeMultiTraj(
00078 std::pair<std::vector<Slot>,std::vector<bool> > init,
00079 std::vector<Slot> goal,
00080 double step,
00081 double Dmin,
00082 double Dmax,
00083 double corridor,
00084 bool enable3D);
00085
00090 MultiTrajectory computeMultiTrajForm(
00091 Formation const& init,
00092 Formation const& goal,
00093 Interval const& inter);
00094
00095 }
00096
00097 }
00098
00099 #endif