11#ifndef PXR_BASE_GF_RANGE1D_H
12#define PXR_BASE_GF_RANGE1D_H
19#include "pxr/base/gf/api.h"
20#include "pxr/base/gf/traits.h"
27PXR_NAMESPACE_OPEN_SCOPE
51 static const size_t dimension = 1;
68 : _min(min), _max(max)
78 double GetMin()
const {
return _min; }
81 double GetMax()
const {
return _max; }
84 double GetSize()
const {
return _max - _min; }
90 return static_cast<ScalarType
>(0.5) * _min
91 +
static_cast<ScalarType
>(0.5) * _max;
95 void SetMin(
double min) { _min = min; }
98 void SetMax(
double max) { _max = max; }
116 return (point >= _min && point <= _max);
145 return (range._max < _min || range._min > _max);
151 _FindMin(res._min,b._min);
152 _FindMax(res._max,b._max);
158 _FindMin(_min,b._min);
159 _FindMax(_max,b._max);
191 _FindMax(res._min,b._min);
192 _FindMin(res._max,b._max);
205 _FindMax(_min,b._min);
206 _FindMin(_max,b._max);
246 return *
this *= (1.0 / m);
251 return GfRange1d(_min + b._min, _max + b._max);
257 return GfRange1d(_min - b._max, _max - b._min);
276 return r * (1.0 / m);
286 return (_min == b._min && _max == b._max);
289 bool operator !=(
const GfRange1d &b)
const {
290 return !(*
this == b);
298 GF_API
inline bool operator !=(
const GfRange1f& other)
const;
310 static void _FindMin(
double &dest,
double point) {
311 if (point < dest) dest = point;
315 static void _FindMax(
double &dest,
double point) {
316 if (point > dest) dest = point;
324PXR_NAMESPACE_CLOSE_SCOPE
326PXR_NAMESPACE_OPEN_SCOPE
330 return _min == double(other.
GetMin()) &&
331 _max == double(other.
GetMax());
335GfRange1d::operator !=(
const GfRange1f& other)
const {
336 return !(*
this == other);
340PXR_NAMESPACE_CLOSE_SCOPE
Basic type: 1-dimensional floating point range.
static GfRange1d GetIntersection(const GfRange1d &a, const GfRange1d &b)
Returns a GfRange1d that describes the intersection of a and b.
double GetMax() const
Returns the maximum value of the range.
bool Contains(double point) const
Returns true if the point is located inside the range.
bool IsInside(double point) const
Returns true if the point is located inside the range.
GfRange1d(double min, double max)
This constructor initializes the minimum and maximum points.
GfRange1d & operator+=(const GfRange1d &b)
unary sum.
bool IsInside(const GfRange1d &range) const
Returns true if the range is located entirely inside the range.
const GfRange1d & Intersection(const GfRange1d &b)
Modifies this range to hold its intersection with b and returns the result.
GfRange1d & operator-=(const GfRange1d &b)
unary difference.
GfRange1d & operator/=(double m)
unary division.
const GfRange1d & Union(double b)
Extend this to include b.
void ExtendBy(const GfRange1d &range)
Modifies the range if necessary to surround the given range.
double GetMin() const
Returns the minimum value of the range.
friend GfRange1d operator/(const GfRange1d &r, double m)
scalar divide.
double GetSize() const
Returns the size of the range.
GF_API GfRange1d(class GfRange1f const &other)
Implicitly convert from GfRange1f.
GfRange1d()
The default constructor creates an empty range.
bool operator==(const GfRange1d &b) const
The min and max points must match exactly for equality.
void ExtendBy(double point)
Modifies the range if necessary to surround the given value.
GfRange1d operator-(const GfRange1d &b) const
binary difference.
double MinMaxType
Helper typedef.
bool IsEmpty() const
Returns whether the range is empty (max < min).
friend GfRange1d operator*(double m, const GfRange1d &r)
scalar multiply.
friend size_t hash_value(const GfRange1d &r)
hash.
bool IsOutside(const GfRange1d &range) const
Returns true if the range is located entirely outside the range.
const GfRange1d & UnionWith(const GfRange1d &b)
Extend this to include b.
GfRange1d operator+(const GfRange1d &b) const
binary sum.
bool Contains(const GfRange1d &range) const
Returns true if the range is located entirely inside the range.
static GfRange1d Union(const GfRange1d &a, const GfRange1d &b)
Returns the smallest GfRange1d which contains both a and b.
void SetEmpty()
Sets the range to an empty interval.
void SetMin(double min)
Sets the minimum value of the range.
static GfRange1d GetUnion(const GfRange1d &a, const GfRange1d &b)
Returns the smallest GfRange1d which contains both a and b.
double GetMidpoint() const
Returns the midpoint of the range, that is, 0.5*(min+max).
const GfRange1d & IntersectWith(const GfRange1d &b)
Modifies this range to hold its intersection with b and returns the result.
GF_API double GetDistanceSquared(double p) const
Compute the squared distance from a point to the range.
const GfRange1d & Union(const GfRange1d &b)
Extend this to include b.
const GfRange1d & UnionWith(double b)
Extend this to include b.
GfRange1d & operator*=(double m)
unary multiply.
void SetMax(double max)
Sets the maximum value of the range.
static GfRange1d Intersection(const GfRange1d &a, const GfRange1d &b)
Returns a GfRange1d that describes the intersection of a and b.
Basic type: 1-dimensional floating point range.
float GetMax() const
Returns the maximum value of the range.
float GetMin() const
Returns the minimum value of the range.
static size_t Combine(Args &&... args)
Produce a hash code by combining the hash codes of several objects.
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
A metafunction with a static const bool member 'value' that is true for GfRange types and false for a...