12 #ifndef __LIDAR_TYPES_H__ 13 #define __LIDAR_TYPES_H__ 19 LT_BEGIN_LIDAR_NAMESPACE
39 Range(
double amin = +HUGE_VAL,
double amax = -HUGE_VAL) :
40 min(amin), max(amax) {}
42 bool operator==(
const Range &r)
const 44 return min == r.
min && max == r.
max;
47 bool operator!=(
const Range &r)
const 49 return min != r.
min || max != r.
max;
53 bool contains(
double v)
const 55 return min <= v && v <=
max;
59 bool overlaps(
const Range &r)
const 62 return min <= r.
max && max >= r.
min;
66 bool empty(
void)
const 72 double length(
void)
const 92 void clip(
const Range &r)
101 void grow(
const Range &r)
135 static const Bounds &Huge(
void);
137 Bounds(
double xmin = +HUGE_VAL,
double xmax = -HUGE_VAL,
138 double ymin = +HUGE_VAL,
double ymax = -HUGE_VAL,
139 double zmin = +HUGE_VAL,
double zmax = -HUGE_VAL) :
140 x(xmin, xmax), y(ymin, ymax), z(zmin, zmax) {}
143 x(ax), y(ay), z(az) {}
145 bool operator==(
const Bounds &b)
const 147 return x == b.
x && y == b.
y && z == b.
z;
150 bool operator!=(
const Bounds &b)
const 152 return x != b.
x || y != b.
y || z != b.
z;
156 bool contains(
double ax,
double ay,
double az)
const 158 return x.contains(ax) && y.contains(ay) && z.contains(az);
162 bool overlaps(
const Bounds &b)
const 164 return x.overlaps(b.
x) && y.overlaps(b.
y) && z.overlaps(b.
z);
168 bool empty(
void)
const 170 return x.empty() || y.empty() || z.empty();
174 double volume(
void)
const 176 return x.length() * y.length() * z.length();
180 void shift(
double dx,
double dy,
double dz)
188 void scale(
double dx,
double dy,
double dz)
196 void clip(
const Bounds &r)
204 void grow(
const Bounds &r)
212 void grow(
double ax,
double ay,
double az)
227 static double overlapFraction(
const Bounds &r1,
const Bounds &r2);
232 LT_END_LIDAR_NAMESPACE
Range is a 1-dimensional interval.
Bounds is a 3-dimensional bounding box.