# Interval¶

```#include <Imath/ImathInterval.h>
```

The `Interval` class template represents a scalar interval, with predefined typedefs for `short`, `int`, `float`, and `double`.

An `Interval` is essentially a `Box<T>` that allows `T` to be a scalar.

Example:

```#include <Imath/ImathInterval.h>
#include <cassert>

void
interval_example ()
{
Imath::Intervalf v;

assert (v.isEmpty ());
assert (!v.hasVolume ());
assert (!v.isInfinite ());

v.extendBy (1.0f);
assert (!v.isEmpty ());

v.extendBy (2.0f);
assert (v.hasVolume ());
assert (v.intersects (1.5f));
}
```
typedef Interval<short> Imath::Intervals

Interval of type short.

typedef Interval<int> Imath::Intervali

Interval of type integer.

typedef Interval<float> Imath::Intervalf

Interval of type float.

typedef Interval<double> Imath::Intervald

Interval of type double.

template<class T>
class Interval

An Interval has a min and a max and some miscellaneous functions.

It is basically a Box<T> that allows T to be a scalar.

T min

The minimum value of the interval.

T max

The minimum value of the interval.

Constructors

inline constexpr Interval() noexcept

Initialize to the empty interval.

inline constexpr Interval(const T &point) noexcept

Intitialize to a single point.

inline constexpr Interval(const T &minT, const T &maxT) noexcept

Intitialize to a given (min,max)

Comparison

inline constexpr bool operator==(const Interval<T> &src) const noexcept

Equality.

inline constexpr bool operator!=(const Interval<T> &src) const noexcept

Inequality.

Manipulation

inline void makeEmpty() noexcept

Set the interval to be empty.

An interval is empty if the minimum is greater than the maximum.

inline void extendBy(const T &point) noexcept

Extend the interval to include the given point.

inline void extendBy(const Interval<T> &interval) noexcept

Extend the interval to include the given interval.

inline void makeInfinite() noexcept

Make the interval include the entire range of the base type.

Query

inline constexpr T size() const noexcept

Return the size of the interval. The size is (max-min). An empty box has a size of 0.

inline constexpr T center() const noexcept

Return the center of the interval.

The center is defined as (max+min)/2. The center of an empty interval is undefined.

inline constexpr bool intersects(const T &point) const noexcept

Return true if the given point is inside the interval, false otherwise.

inline constexpr bool intersects(const Interval<T> &interval) const noexcept

Return true if the given interval is inside the interval, false otherwise.

inline constexpr bool isEmpty() const noexcept

Return true if the interval is empty, false otherwise.

An empty interval’s minimum is greater than its maximum.

inline constexpr bool hasVolume() const noexcept

Return true if the interval is larger than a single point, false otherwise.

inline constexpr bool isInfinite() const noexcept

Return true if the interval contains all points, false otherwise.

An infinite box has a mimimum of std::numeric_limits<T>::lowest() and a maximum of std::numeric_limits<T>::max()

template<class T>
std::ostream &Imath::operator<<(std::ostream &s, const Interval<T> &v)

Stream output, as “(min max)”.

Stream output.