29 template <
class T,
unsigned Dim >
class NDRegion;
30 template <
class T,
unsigned Dim>
32 template <
class T,
unsigned Dim>
34 template <
class T,
unsigned Dim>
36 template <
class T,
unsigned Dim>
38 template <
class T,
unsigned Dim>
40 template <
class T,
unsigned Dim>
42 template <
class T,
unsigned Dim>
44 template <
class T,
unsigned Dim>
46 template <
class T,
unsigned Dim>
48 template <
class T,
unsigned Dim>
50 template <
class T,
unsigned Dim>
52 template <
class T,
unsigned Dim >
53 std::ostream& operator<<(std::ostream&, const NDRegion<T,Dim>&);
55 template <
class T,
unsigned Dim >
64 for (
unsigned int i=0; i <
Dim; i++)
70 PInsist(
Dim==1,
"Number of arguments does not match NDRegion dimension!!");
74 PInsist(
Dim==2,
"Number of arguments does not match NDRegion dimension!!");
79 PInsist(
Dim==3,
"Number of arguments does not match NDRegion dimension!!");
86 PInsist(
Dim==4,
"Number of arguments does not match NDRegion dimension!!");
94 PInsist(
Dim==5,
"Number of arguments does not match NDRegion dimension!!");
103 PInsist(
Dim==6,
"Number of arguments does not match NDRegion dimension!!");
114 for (
unsigned int i=0; i <
Dim; i++)
120 for (
unsigned int i=0; i <
Dim; i++)
132 for (
unsigned int i=1; i <
Dim; i++)
139 for (
unsigned int i=0; i <
Dim; i++)
144 for (
unsigned int i=0; i <
Dim; i++)
149 for (
unsigned int i=0; i <
Dim; i++)
155 for (
unsigned int i=0; i <
Dim; i++)
p[i] /= t;
161 for (
unsigned int i=0; i <
Dim; i++)
170 for (
unsigned int i=0; i <
Dim; i++)
171 retval.
p[i] =
p[i].intersect(nr.
p[i]);
176 for (
unsigned int i=0; i <
Dim; i++)
183 for (
unsigned int i=0; i <
Dim; i++)
192 for (
unsigned int i=0; i <
Dim; i++) {
194 p[i].split(l.
p[i], r.
p[i]);
207 T maxlen =
p[0].length();
208 for (
unsigned i=1; i <
Dim; i++) {
209 if (
p[i].length() > maxlen) {
210 maxlen =
p[i].length();
215 return split(l, r, d);
220 for (
unsigned d = 0 ; d <
Dim ; ++d )
227 for (
unsigned d = 0 ; d <
Dim ; ++d )
239 template <
class T,
unsigned Dim>
246 template <
class T,
unsigned Dim>
251 template <
class T,
unsigned Dim>
256 template <
class T,
unsigned Dim>
263 template <
class T,
unsigned Dim>
267 for (
unsigned int i=0; i <
Dim; i++)
271 template <
class T,
unsigned Dim>
278 template <
class T,
unsigned Dim>
283 template <
class T,
unsigned Dim>
286 return (t != 0 ? (nr * (1/t)) : nr);
291 template <
class T,
unsigned Dim>
294 for (
unsigned int i=0; i <
Dim; i++)
295 if ( !(A[i] < B[i]) )
return false;
298 template <
class T,
unsigned Dim>
301 for (
unsigned int i=0; i <
Dim; i++)
302 if ( !(A[i] == B[i]) )
return false;
305 template <
class T,
unsigned Dim>
312 template <
class T,
unsigned Dim>
314 std::ostream& operator<<(std::ostream& out, const NDRegion<T,Dim>& idx) {
316 for (
unsigned d = 0; d <
Dim; ++d)
317 out << idx[d] << ((d==Dim-1) ?
'}' :
',');
325 template <
class T,
unsigned Dim >
335 template <
class T,
unsigned Dim >
345 template <
class T,
unsigned Dim >
NDRegion(const PRegion< T > &r1, const PRegion< T > &r2, const PRegion< T > &r3, const PRegion< T > &r4, const PRegion< T > &r5, const PRegion< T > &r6)
NDRegion(const NDRegion< T, Dim > &nr)
bool operator!=(const Offset &off1, const Offset &off2)
NDRegion(const PRegion< T > &r1, const PRegion< T > &r2, const PRegion< T > &r3, const PRegion< T > &r4)
NDRegion< T, Dim > intersect(const NDRegion< T, Dim > &nr) const
PRegion< T > & operator[](unsigned d)
Matrix< T > operator-(const Matrix< T > &, const Matrix< T > &)
Matrix subtraction.
Message & getMessage(Message &m)
const PRegion< T > & operator[](unsigned d) const
static bool test(NDRegion< T, Dim > &l, NDRegion< T, Dim > &r, const NDRegion< T, Dim > &a)
Message & putMessage(Message &m)
bool operator==(const TwoPolynomial &left, const TwoPolynomial &right)
NDRegion< T, Dim > & operator=(const NDRegion< T, Dim > &nr)
NDRegion(const PRegion< T > &r1)
Matrix< T > operator*(const Matrix< T > &, const Matrix< T > &)
Matrix multiply.
NDRegion(PRegion< T > *idx)
NDRegion< T, Dim > & operator*=(const T t)
NDRegion< T, Dim > & operator+=(const T t)
bool contains(const NDRegion< T, Dim > &nr) const
NDRegion(const PRegion< T > &r1, const PRegion< T > &r2)
Matrix< T > operator+(const Matrix< T > &, const Matrix< T > &)
Matrix addition.
NDRegion< T, Dim > & operator/=(const T t)
static bool test(const NDRegion< T, Dim > &a, const NDRegion< T, Dim > &b)
bool split(NDRegion< T, Dim > &l, NDRegion< T, Dim > &r) const
static bool test(const NDRegion< T, Dim > &a, const NDRegion< T, Dim > &b)
Matrix< T > operator/(const Matrix< T > &, const T &)
Matrix divided by scalar.
NDRegion(const PRegion< T > &r1, const PRegion< T > &r2, const PRegion< T > &r3)
NDRegion(const PRegion< T > &r1, const PRegion< T > &r2, const PRegion< T > &r3, const PRegion< T > &r4, const PRegion< T > &r5)
NDRegion< T, Dim > & operator-=(const T t)
bool split(NDRegion< T, Dim > &l, NDRegion< T, Dim > &r, unsigned d) const
bool touches(const NDRegion< T, Dim > &nr) const