]> rtime.felk.cvut.cz Git - hubacji1/rrts.git/blob - api/rrtext.h
Implement ext2 init
[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 RRTS {
14         private:
15                 c2Poly c2_bc_;
16                 std::vector<c2Poly> c2_obstacles_;
17         public:
18                 void init();
19                 void deinit();
20
21                 // Collide RRT procedures
22                 std::tuple<bool, unsigned int, unsigned int>
23                 collide_steered_from(RRTNode &f);
24
25                 std::tuple<bool, unsigned int, unsigned int>
26                 collide_two_nodes(RRTNode &f, RRTNode &t);
27
28                 // getters, setters
29                 c2Poly &c2_bc() { return this->c2_bc_; }
30                 std::vector<c2Poly> &c2_obstacles() {
31                         return this->c2_obstacles_;
32                 };
33 };
34
35 /*! \brief Different costs extension.
36
37 Use different cost for bulding tree data structure and searching in the
38 structure.
39 */
40 class RRTExt1 : public RRTS {
41         public:
42                 /*! \brief Reeds and Shepp path length.
43                 */
44                 double cost_build(RRTNode &f, RRTNode &t);
45                 /*! \brief Matej's heuristics.
46                 */
47                 double cost_search(RRTNode &f, RRTNode &t);
48 };
49
50 #endif /* RRTEXT_H */