28 #ifndef PXR_BASE_GF_RANGE1F_H
29 #define PXR_BASE_GF_RANGE1F_H
36 #include "pxr/base/gf/api.h"
37 #include "pxr/base/gf/traits.h"
39 #include <boost/functional/hash.hpp>
45 PXR_NAMESPACE_OPEN_SCOPE
69 static const size_t dimension = 1;
86 : _min(min), _max(max)
91 float GetMin()
const {
return _min; }
94 float GetMax()
const {
return _max; }
97 float GetSize()
const {
return _max - _min; }
103 return static_cast<ScalarType
>(0.5) * _min
104 +
static_cast<ScalarType
>(0.5) * _max;
129 return (point >= _min && point <= _max);
158 return (range._max < _min || range._min > _max);
164 _FindMin(res._min,b._min);
165 _FindMax(res._max,b._max);
171 _FindMin(_min,b._min);
172 _FindMax(_max,b._max);
204 _FindMax(res._min,b._min);
205 _FindMin(res._max,b._max);
218 _FindMax(_min,b._min);
219 _FindMin(_max,b._max);
259 return *
this *= (1.0 / m);
264 return GfRange1f(_min + b._min, _max + b._max);
270 return GfRange1f(_min - b._max, _max - b._min);
289 return r * (1.0 / m);
295 boost::hash_combine(h, r._min);
296 boost::hash_combine(h, r._max);
302 return (_min == b._min && _max == b._max);
305 bool operator !=(
const GfRange1f &b)
const {
306 return !(*
this == b);
314 GF_API
inline bool operator !=(
const GfRange1d& other)
const;
326 static void _FindMin(
float &dest,
float point) {
327 if (point < dest) dest = point;
331 static void _FindMax(
float &dest,
float point) {
332 if (point > dest) dest = point;
340 PXR_NAMESPACE_CLOSE_SCOPE
342 PXR_NAMESPACE_OPEN_SCOPE
346 return _min == float(other.
GetMin()) &&
347 _max ==
float(other.
GetMax());
351 GfRange1f::operator !=(
const GfRange1d& other)
const {
352 return !(*
this == other);
356 PXR_NAMESPACE_CLOSE_SCOPE
358 #endif // PXR_BASE_GF_RANGE1F_H
bool Contains(float point) const
Returns true if the point is located inside the range.
Basic type: 1-dimensional floating point range.
const GfRange1f & Union(const GfRange1f &b)
Extend this to include b.
const GfRange1f & Intersection(const GfRange1f &b)
Modifies this range to hold its intersection with b and returns the result.
GfRange1f operator+=(const GfRange1f &b)
unary sum.
float GetMidpoint() const
Returns the midpoint of the range, that is, 0.5*(min+max).
A metafunction with a static const bool member 'value' that is true for GfRange types and false for a...
void SetMax(float max)
Sets the maximum value of the range.
bool Contains(const GfRange1f &range) const
Returns true if the range is located entirely inside the range.
GfRange1f operator*=(double m)
unary multiply.
const GfRange1f & UnionWith(float b)
Extend this to include b.
GF_API double GetDistanceSquared(float p) const
Compute the squared distance from a point to the range.
void ExtendBy(const GfRange1f &range)
Modifies the range if necessary to surround the given range.
double GetMin() const
Returns the minimum value of the range.
static GfRange1f GetIntersection(const GfRange1f &a, const GfRange1f &b)
Returns a GfRange1f that describes the intersection of a and b.
static GfRange1f GetUnion(const GfRange1f &a, const GfRange1f &b)
Returns the smallest GfRange1f which contains both a and b.
const GfRange1f & UnionWith(const GfRange1f &b)
Extend this to include b.
GfRange1f operator+(const GfRange1f &b) const
binary sum.
GfRange1f()
The default constructor creates an empty range.
GfRange1f operator/=(double m)
unary division.
void SetEmpty()
Sets the range to an empty interval.
float MinMaxType
Helper typedef.
float GetMax() const
Returns the maximum value of the range.
bool IsInside(float point) const
Returns true if the point is located inside the range.
Basic type: 1-dimensional floating point range.
void ExtendBy(float point)
Modifies the range if necessary to surround the given value.
GfRange1f operator-=(const GfRange1f &b)
unary difference.
float GetSize() const
Returns the size of the range.
bool IsInside(const GfRange1f &range) const
Returns true if the range is located entirely inside the range.
float GetMin() const
Returns the minimum value of the range.
friend size_t hash_value(const GfRange1f &r)
hash.
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
static GfRange1f Intersection(const GfRange1f &a, const GfRange1f &b)
Returns a GfRange1f that describes the intersection of a and b.
bool IsOutside(const GfRange1f &range) const
Returns true if the range is located entirely outside the range.
GfRange1f operator-(const GfRange1f &b) const
binary difference.
double GetMax() const
Returns the maximum value of the range.
friend GfRange1f operator/(const GfRange1f &r, double m)
scalar divide.
GfRange1f(float min, float max)
This constructor initializes the minimum and maximum points.
friend GfRange1f operator*(double m, const GfRange1f &r)
scalar multiply.
const GfRange1f & Union(float b)
Extend this to include b.
const GfRange1f & IntersectWith(const GfRange1f &b)
Modifies this range to hold its intersection with b and returns the result.
void SetMin(float min)
Sets the minimum value of the range.
bool operator==(const GfRange1f &b) const
The min and max points must match exactly for equality.
bool IsEmpty() const
Returns whether the range is empty (max < min).
static GfRange1f Union(const GfRange1f &a, const GfRange1f &b)
Returns the smallest GfRange1f which contains both a and b.