Go to the documentation of this file.
16 #ifndef SURGSIM_MATH_INTERVALARITHMETIC_H
17 #define SURGSIM_MATH_INTERVALARITHMETIC_H
59 Interval(
const T& min,
const T& max);
198 template <
class T,
int N>
202 static_assert(N >= 1,
"IntervalND<T, N> cannot be instantiated with N<=0.");
222 IntervalND(
const std::array<T, N>& a,
const std::array<T, N>& b);
345 IntervalND(
const std::array<T, 3>& a,
const std::array<T, 3>& b);
433 template <
typename T>
440 template <
typename T>
448 template <
typename T>
522 template <
typename T,
int N>
568 #endif // SURGSIM_MATH_INTERVALARITHMETIC_H
Interval< T > square() const
Definition: IntervalArithmetic-inl.h:273
bool operator!=(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:116
IntervalND< T, N > operator+(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:433
T m_min
The lower (m_min) and upper (m_max) limits of the interval.
Definition: IntervalArithmetic.h:187
Interval< T > & operator+=(const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:170
Interval< T > & operator*=(const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:239
void IntervalArithmetic_addsub(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:804
IntervalND<T,3> defines the concept of a group of mathematical intervals specialized to 3 intervals a...
Definition: IntervalArithmetic.h:308
Interval< T > inverse() const
Definition: IntervalArithmetic-inl.h:253
T getMax() const
Definition: IntervalArithmetic-inl.h:289
friend void IntervalArithmetic_dotProduct(const IntervalND< P, 3 > &a, const IntervalND< P, 3 > &b, Interval< P > *res)
Calculate the dot product of two interval groups.
friend void IntervalArithmetic_add(const IntervalND< P, 3 > &a, const IntervalND< P, 3 > &b, IntervalND< P, 3 > *res)
Calculate the sum of two interval groups.
Interval< T > dotProduct(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:528
Interval< T > & addThickness(const T &thickness)
Widens the current interval by thickness on both sides.
Definition: IntervalArithmetic-inl.h:122
Interval< T > upperHalf() const
Definition: IntervalArithmetic-inl.h:301
IntervalND< T, N > & operator-=(const IntervalND< T, N > &interval)
Definition: IntervalArithmetic-inl.h:465
IntervalND< T, N > operator/(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:507
IntervalND< T, N > & operator=(const IntervalND< T, N > &interval)
Assignment operator.
Definition: IntervalArithmetic-inl.h:353
Interval< T > operator+(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:158
std::array< Interval< T >, N > m_interval
The N dimensional group of intervals.
Definition: IntervalArithmetic.h:297
bool isApprox(const Interval< T > &i, const T &epsilon) const
Definition: IntervalArithmetic-inl.h:104
bool isApprox(const IntervalND< T, N > &interval, const T &epsilon) const
Definition: IntervalArithmetic-inl.h:391
bool overlapsWith(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:377
void IntervalArithmetic_sub(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:797
IntervalND< T, N > operator-(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:454
friend void IntervalArithmetic_addadd(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Calculate the sum of three intervals res + a + b.
Definition: CompoundShapeToGraphics.cpp:30
Interval< T > operator*(T v, const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:777
Interval< T > & operator/=(const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:267
IntervalND< T, N > operator*(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:475
IntervalND< T, N > inverse() const
Definition: IntervalArithmetic-inl.h:496
friend void IntervalArithmetic_sub(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Calculate the difference of two intervals.
Interval< T > magnitude() const
Definition: IntervalArithmetic-inl.h:550
void IntervalArithmetic_addmul(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:820
IntervalND()
Constructor.
Definition: IntervalArithmetic-inl.h:308
Interval defines the concept of a mathematical interval and provides operations on it including arith...
Definition: IntervalArithmetic.h:35
std::ostream & operator<<(std::ostream &o, const Interval< T > &interval)
Write a textual version of the interval to an output stream.
Definition: IntervalArithmetic-inl.h:839
void IntervalArithmetic_dotProduct(const IntervalND< T, 3 > &a, const IntervalND< T, 3 > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:889
std::array< Interval< T >, 3 > m_interval
The 3 dimensional group of intervals.
Definition: IntervalArithmetic.h:424
void IntervalArithmetic_crossProduct(const IntervalND< T, 3 > &a, const IntervalND< T, 3 > &b, IntervalND< T, 3 > *res)
Definition: IntervalArithmetic-inl.h:876
Interval< T > operator*(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:220
IntervalND< T, N > & addThickness(const T &thickness)
Widens every interval in the current interval group by thickness on both sides.
Definition: IntervalArithmetic-inl.h:423
T m_max
Definition: IntervalArithmetic.h:187
Interval()
Constructor.
Definition: IntervalArithmetic-inl.h:27
friend void IntervalArithmetic_addmul(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Add the product of two intervals to an existing value.
static Interval< T > minToMax(const T &a1, const T &a2)
Generate an interval from min to max based on the inputs.
Definition: IntervalArithmetic-inl.h:62
IntervalND defines the concept of a group of mathematical intervals and provides operations on them i...
Definition: IntervalArithmetic.h:200
T getMin() const
Definition: IntervalArithmetic-inl.h:283
void IntervalArithmetic_submul(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:829
bool overlapsWith(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:86
friend void IntervalArithmetic_submul(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Subtract the product of two intervals from an existing value.
Interval< T > magnitudeSquared() const
Definition: IntervalArithmetic-inl.h:539
Interval< T > lowerHalf() const
Definition: IntervalArithmetic-inl.h:295
Interval< T > operator/(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:261
friend void IntervalArithmetic_sub(const IntervalND< P, 3 > &a, const IntervalND< P, 3 > &b, IntervalND< P, 3 > *res)
Calculate the difference of two interval groups.
friend void IntervalArithmetic_addsub(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Add the difference of two intervals to an existing value.
IntervalND< T, N > & operator+=(const IntervalND< T, N > &interval)
Definition: IntervalArithmetic-inl.h:444
void IntervalArithmetic_mul(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:811
IntervalND< T, N > & operator*=(const IntervalND< T, N > &interval)
Definition: IntervalArithmetic-inl.h:486
Interval< T > & extendToInclude(const T &x)
Widens the current interval on one end to include x.
Definition: IntervalArithmetic-inl.h:130
bool containsZero() const
Definition: IntervalArithmetic-inl.h:98
friend void IntervalArithmetic_crossProduct(const IntervalND< P, 3 > &a, const IntervalND< P, 3 > &b, IntervalND< P, 3 > *res)
Calculate the cross product of two interval groups.
Interval< T > operator-() const
Definition: IntervalArithmetic-inl.h:186
bool operator==(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:404
bool contains(const T &val) const
Definition: IntervalArithmetic-inl.h:92
Interval< T > & operator-=(const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:204
bool operator==(const Interval< T > &i) const
Definition: IntervalArithmetic-inl.h:110
IntervalND< T, N > & operator/=(const IntervalND< T, N > &interval)
Definition: IntervalArithmetic-inl.h:518
friend void IntervalArithmetic_mul(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Calculate the product of two intervals.
Interval< T > & operator=(const Interval< T > &i)
Assignment operator.
Definition: IntervalArithmetic-inl.h:46
friend void IntervalArithmetic_add(const Interval< P > &a, const Interval< P > &b, Interval< P > *res)
Calculate the sum of two intervals.
Interval< T > operator+(T v, const Interval< T > &i)
Definition: IntervalArithmetic-inl.h:771
void IntervalArithmetic_add(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:783
const Interval< T > & getAxis(size_t i) const
Definition: IntervalArithmetic-inl.h:558
bool operator!=(const IntervalND< T, N > &interval) const
Definition: IntervalArithmetic-inl.h:417
void IntervalArithmetic_addadd(const Interval< T > &a, const Interval< T > &b, Interval< T > *res)
Definition: IntervalArithmetic-inl.h:790