codac 2.0.0
Loading...
Searching...
No Matches
codac2_SepVisible.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include "codac2_Sep.h"
13#include "codac2_CtcVisible.h"
14
15namespace codac2 {
16 class SepVisible : public Sep<SepVisible> {
17 public:
21 SepVisible(const IntervalVector& a, const Segment& s)
22 : Sep<SepVisible>(2),
23 _ctc_visible(a, s),
24 _ctc_novisible(a, s)
25 {}
26
30 SepVisible(const IntervalVector& a, const std::vector<Segment>& s)
31 : Sep<SepVisible>(2),
32 _ctc_visible(a, s),
33 _ctc_novisible(a, s)
34 {}
35
39 SepVisible(const IntervalVector& a, const Polygon& p)
40 : Sep<SepVisible>(2),
41 _ctc_visible(a, p),
42 _ctc_novisible(a, p)
43 {}
44
45 BoxPair separate(const IntervalVector& x) const override {
46 IntervalVector x_in(x);
47 IntervalVector x_out(x);
48
49 _ctc_novisible.contract(x_in);
50 _ctc_visible.contract(x_out);
51
52 assert((x_in | x_out) == x);
53
54 return {x_in, x_out};
55 }
56
57 private:
58 const CtcVisible _ctc_visible;
59 const CtcNoVisible _ctc_novisible;
60 };
61}
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