codac 2.0.0
Loading...
Searching...
No Matches
codac2_CtcVisible.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include "codac2_Ctc.h"
13#include "codac2_Segment.h"
14#include "codac2_Polygon.h"
15
16namespace codac2
17{
18 struct VisibilityEdgeData {
19 IntervalVector e1, e2;
20 IntervalVector v_e2e1, v_ae1, v_ae2;
21 IntervalVector s_box;
22 double k;
23 };
24
25 class CtcVisibleBase
26 {
27 protected:
28
29 CtcVisibleBase(const IntervalVector& a, const std::vector<Segment>& edges);
30
31 const IntervalVector _a;
32 std::vector<VisibilityEdgeData> _edges;
33 };
34
35 class CtcVisible : public Ctc<CtcVisible, IntervalVector>, CtcVisibleBase
36 {
37 public:
41 CtcVisible(const IntervalVector& a, const Segment& s);
42
46 CtcVisible(const IntervalVector& a, const std::vector<Segment>& s);
47
51 CtcVisible(const IntervalVector& a, const Polygon& p);
52
53 void contract(IntervalVector& x) const;
54 };
55
56 class CtcNoVisible : public Ctc<CtcNoVisible, IntervalVector>, CtcVisibleBase
57 {
58 public:
62 CtcNoVisible(const IntervalVector& a, const Segment& s);
63
67 CtcNoVisible(const IntervalVector& a, const std::vector<Segment>& s);
68
72 CtcNoVisible(const IntervalVector& a, const Polygon& p);
73
74 void contract(IntervalVector& x) const;
75 };
76}
Definition codac2_OctaSym.h:21
Eigen::Matrix< Interval,-1, 1 > IntervalVector
Alias for a dynamic-size column vector of intervals.
Definition codac2_IntervalVector.h:25