]> rtime.felk.cvut.cz Git - hubacji1/rrts.git/blob - api/rrtext.h
170f8e8b6bbb3580b218b541bd6f04048375b26b
[hubacji1/rrts.git] / api / rrtext.h
1 #ifndef RRTEXT_H
2 #define RRTEXT_H
3
4 #include "rrts.h"
5
6 // ext2
7 #include "cute_c2.h"
8
9 /*! \brief Use cute_c2 for collision detection.
10
11 \see https://github.com/RandyGaul/cute_headers/blob/master/cute_c2.h
12 */
13 class RRTExt2 : public virtual RRTS {
14         private:
15                 c2Poly c2_bc_;
16                 c2x c2x_bc_;
17                 std::vector<c2Poly> c2_obstacles_;
18         public:
19                 void init();
20                 void deinit();
21
22                 // Collide RRT procedures
23                 std::tuple<bool, unsigned int, unsigned int>
24                 collide_steered_from(RRTNode &f);
25
26                 std::tuple<bool, unsigned int, unsigned int>
27                 collide_two_nodes(RRTNode &f, RRTNode &t);
28
29                 // getters, setters
30                 c2Poly &c2_bc() { return this->c2_bc_; }
31                 c2x &c2x_bc() { return this->c2x_bc_; }
32                 std::vector<c2Poly> &c2_obstacles() {
33                         return this->c2_obstacles_;
34                 };
35 };
36
37 /*! \brief Different costs extension.
38
39 Use different cost for bulding tree data structure and searching in the
40 structure.
41 */
42 class RRTExt1 : public virtual RRTS {
43         public:
44                 /*! \brief Reeds and Shepp path length.
45                 */
46                 double cost_build(RRTNode &f, RRTNode &t);
47                 /*! \brief Matej's heuristics.
48                 */
49                 double cost_search(RRTNode &f, RRTNode &t);
50 };
51
52 #endif /* RRTEXT_H */