PeriDyno 1.0.0
Loading...
Searching...
No Matches
Interval.inl
Go to the documentation of this file.
1#include "Interval.h"
2#include "Math/SimpleMath.h"
3
4namespace dyno {
5
6 template <typename Real>
8 v0(0),
9 v1(0),
10 leftOpen(true),
11 rightOpen(true)
12 {
13 }
14
15 template <typename Real>
16 DYN_FUNC Interval<Real>::Interval(Real min_val, Real max_val, bool lOpen, bool rOpen) :
17 v0(min_val),
18 v1(max_val),
19 leftOpen(lOpen),
20 rightOpen(rOpen)
21 {
22 }
23
24 template <typename Real>
25 DYN_FUNC Interval<Real>::Interval(const Interval<Real> &interval) :
26 v0(interval.v0),
27 v1(interval.v1),
28 leftOpen(interval.leftOpen),
29 rightOpen(interval.rightOpen)
30
31 {
32 }
33
34 template <typename Real>
36 {
37 v0 = interval.v0;
38 v1 = interval.v1;
39 leftOpen = interval.leftOpen;
40 rightOpen = interval.rightOpen;
41 return *this;
42 }
43
44 template <typename Real>
45 DYN_FUNC bool Interval<Real>::operator==(const Interval<Real> &interval)
46 {
47 return (v0 == interval.v0)
48 && (v1 == interval.v0)
49 && (leftOpen == interval.leftOpen)
50 && (rightOpen == interval.rightOpen);
51 }
52
53 template <typename Real>
54 DYN_FUNC bool Interval<Real>::operator!=(const Interval<Real> &interval)
55 {
56 return !((*this) == interval);
57 }
58
59 template <typename Real>
61 {
62 }
63
64 template <typename Real>
65 DYN_FUNC Real Interval<Real>::size() const
66 {
67 return (v1 - v0);
68 }
69
70 template <typename Real>
71 DYN_FUNC bool Interval<Real>::isLeftOpen() const
72 {
73 return leftOpen;
74 }
75
76 template <typename Real>
77 DYN_FUNC bool Interval<Real>::isRightOpen() const
78 {
79 return rightOpen;
80 }
81
82 template <typename Real>
83 DYN_FUNC void Interval<Real>::setLeftLimit(Real val, bool bOpen)
84 {
85 v0 = val;
86 leftOpen = bOpen;
87 }
88
89 template <typename Real>
90 DYN_FUNC void Interval<Real>::setRightLimit(Real val, bool bOpen)
91 {
92 v1 = val;
93 rightOpen = bOpen;
94 }
95
96 template <typename Real>
97 DYN_FUNC bool Interval<Real>::inside(Real val) const
98 {
99 if (isEmpty())
100 {
101 return false;
102 }
103
104 if (val > v0 && val < v1)
105 return true;
106 else if ((val == v0 && leftOpen == false) || (val == v1 && rightOpen == false))
107 return true;
108 else
109 return false;
110 }
111
112 template <typename Real>
113 DYN_FUNC bool Interval<Real>::outside(Real val) const
114 {
115 return !inside(val);
116 }
117
118 template <typename Real>
120 {
121 Interval<Real> ret;
122
123 ret.v0 = maximum(v0, itv.v0);
124 ret.v1 = minimum(v1, itv.v1);
125 ret.leftOpen = outside(ret.v0)||itv.outside(ret.v0);
126 ret.rightOpen = outside(ret.v1) || itv.outside(ret.v1);
127
128 return ret;
129 }
130
131 template <typename Real>
132 DYN_FUNC bool Interval<Real>::isEmpty() const
133 {
134 return v0 > v1 || (v0 == v1 && (leftOpen == true || rightOpen == true));
135 }
136
137 template <typename Real>
139 {
140 return Interval<Real>(0, 1, false, false);
141 }
142} //end of namespace dyno
double Real
Definition Typedef.inl:23
DYN_FUNC void setRightLimit(Real val, bool bOpen=false)
Definition Interval.inl:90
DYN_FUNC void setLeftLimit(Real val, bool bOpen=false)
Definition Interval.inl:83
DYN_FUNC bool inside(Real val) const
Definition Interval.inl:97
static DYN_FUNC Interval< Real > unitInterval()
Definition Interval.inl:138
DYN_FUNC ~Interval()
Definition Interval.inl:60
DYN_FUNC bool operator!=(const Interval< Real > &interval)
Definition Interval.inl:54
DYN_FUNC bool isRightOpen() const
Definition Interval.inl:77
DYN_FUNC bool isLeftOpen() const
Definition Interval.inl:71
DYN_FUNC bool isEmpty() const
Definition Interval.inl:132
DYN_FUNC Interval< Real > & operator=(const Interval< Real > &interval)
Definition Interval.inl:35
DYN_FUNC Real size() const
Definition Interval.inl:65
DYN_FUNC Interval< Real > intersect(const Interval< Real > &itv) const
Definition Interval.inl:119
DYN_FUNC bool outside(Real val) const
Definition Interval.inl:113
DYN_FUNC bool operator==(const Interval< Real > &interval)
Definition Interval.inl:45
DYN_FUNC Interval()
Definition Interval.inl:7
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
DYN_FUNC T minimum(const T &v0, const T &v1)
Definition SimpleMath.h:120
DYN_FUNC T maximum(const T &v0, const T &v1)
Definition SimpleMath.h:160