Imath
<navlinks>
<page>

# 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 Imath::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.

  Direct access to bounds

  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.

</page>