codac 2.0.0
Loading...
Searching...
No Matches
codac2_SepWrapper.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include "codac2_Sep.h"
13#include "codac2_SepCtcPair.h"
14#include "codac2_CtcWrapper.h"
15#include "codac2_CtcUnion.h"
16#include "codac2_Paving.h"
17
18namespace codac2
19{
21
22 template<typename T>
23 class SepWrapper : public Sep<SepWrapper<T>>
24 {
25 public:
26
27 SepWrapper(const T& y)
28 : Sep<SepWrapper<T>>(y.size()), _y(y)
29 { }
30
31 protected:
32
33 const T _y;
34 };
35
37
38 template<>
39 class SepWrapper<IntervalVector> : public SepCtcPair
40 {
41 public:
42
43 SepWrapper(const IntervalVector& y)
44 : SepCtcPair([y]()
45 {
46 // Inner contractor:
47 CtcUnion<IntervalVector> cu(y.size());
48 for(const auto& complem_y : y.complementary())
49 cu |= CtcWrapper<IntervalVector>(complem_y);
50 return cu;
51 }(),
52 CtcWrapper<IntervalVector>(y))
53 { }
54
55 BoxPair separate(const IntervalVector& x) const;
56 // ^ is referenced here for Doxygen purpose
57 };
58
59 template<>
60 class SepWrapper<PavingInOut>: public Sep<SepWrapper<PavingInOut>>
61 {
62 public:
63
64 SepWrapper(const PavingInOut& P)
65 : Sep<SepWrapper<PavingInOut>>(P.size()), _P(P)
66 { }
67
68 BoxPair separate(const IntervalVector& x) const;
69
70 protected:
71
72 const PavingInOut _P;
73 };
74}
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