Classes
lar::util::simple_geo Namespace Reference

Simple class definitions for geometry concepts. More...

Classes

class  Area
 Area delimited by two points. More...
 
class  AreaBase
 Area/volume delimited by points: base/1D implementation. More...
 
struct  Point2D
 2D point (x, y) (by default, with double precision) More...
 
struct  Point3D
 3D point (x, y, z) (by default, with double precision) More...
 
struct  Range
 Definition of a range along one dimension. More...
 
struct  Rectangle
 Definition of a rectangle from dimension ranges. More...
 
class  Volume
 Volume delimited by two points. More...
 

Functions

Dimensionless objects (points)
template<typename T >
bool operator== (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
bool operator!= (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
Point2D< T > operator+ (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
Point2D< T > operator* (Point2D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename T >
Point2D< T > operator/ (Point2D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename Stream , typename T >
Stream & operator<< (Stream &&out, Point2D< T > const &p)
 
template<typename T >
bool operator== (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
bool operator!= (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
Point3D< T > operator+ (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
Point3D< T > operator* (Point3D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename T >
Point3D< T > operator/ (Point3D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename Stream , typename T >
Stream & operator<< (Stream &&out, Point3D< T > const &p)
 
Point-bounded volumes
template<typename Stream , typename Point >
Stream & operator<< (Stream &&out, AreaBase< Point > const &area)
 
Dimension-bounded volumes
template<typename Stream , typename Data >
Stream & operator<< (Stream &&out, Range< Data > const &range)
 Prints the specified range to a stream: "( lower -- upper )". More...
 
template<typename Stream , typename Data >
Stream & operator<< (Stream &&out, Rectangle< Data > const &rect)
 Prints the specified rectangle to a stream: "w=Wrange d=Drange". More...
 

Detailed Description

Simple class definitions for geometry concepts.

This namespace provides data structures for "points" and extended structures.

Points are either 2D (Point2D) or 3D (Point3D).

The extended structures are offered in two flavours:

Function Documentation

template<typename T >
bool lar::util::simple_geo::operator!= ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 67 of file SimpleGeo.h.

68  { return (a.x != b.x) || (a.y != b.y); }
const double a
static bool * b
Definition: config.cpp:1043
template<typename T >
bool lar::util::simple_geo::operator!= ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 100 of file SimpleGeo.h.

101  { return (a.x != b.x) || (a.y != b.y) || (a.z != b.z); }
const double a
static bool * b
Definition: config.cpp:1043
template<typename T >
Point2D<T> lar::util::simple_geo::operator* ( Point2D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 73 of file SimpleGeo.h.

74  { return { p.x * f, p.y * f }; }
p
Definition: test.py:223
template<typename T >
Point3D<T> lar::util::simple_geo::operator* ( Point3D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 106 of file SimpleGeo.h.

107  { return { p.x * f, p.y * f, p.z * f }; }
p
Definition: test.py:223
template<typename T >
Point2D<T> lar::util::simple_geo::operator+ ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 70 of file SimpleGeo.h.

71  { return { a.x + b.x, a.y + b.y }; }
const double a
static bool * b
Definition: config.cpp:1043
template<typename T >
Point3D<T> lar::util::simple_geo::operator+ ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 103 of file SimpleGeo.h.

104  { return { a.x + b.x, a.y + b.y, a.z + b.z }; }
const double a
static bool * b
Definition: config.cpp:1043
template<typename T >
Point2D<T> lar::util::simple_geo::operator/ ( Point2D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 76 of file SimpleGeo.h.

77  { return { p.x / f, p.y / f }; }
p
Definition: test.py:223
template<typename T >
Point3D<T> lar::util::simple_geo::operator/ ( Point3D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 109 of file SimpleGeo.h.

110  { return { p.x / f, p.y / f, p.z / f }; }
p
Definition: test.py:223
template<typename Stream , typename T >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
Point2D< T > const &  p 
)

Definition at line 79 of file SimpleGeo.h.

80  { out << "( " << p.x << " ; " << p.y << " )"; return out; }
p
Definition: test.py:223
template<typename Stream , typename T >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
Point3D< T > const &  p 
)

Definition at line 112 of file SimpleGeo.h.

113  {
114  out << "( " << p.x << " ; " << p.y << " ; " << p.z << " )";
115  return out;
116  }
p
Definition: test.py:223
template<typename Stream , typename Point >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
AreaBase< Point > const &  area 
)

Definition at line 255 of file SimpleGeo.h.

256  { out << area.Min() << " - " << area.Max(); return out; }
template<typename Stream , typename Data >
Stream & lar::util::simple_geo::operator<< ( Stream &&  out,
Range< Data > const &  range 
)

Prints the specified range to a stream: "( lower -- upper )".

Definition at line 507 of file SimpleGeo.h.

508 {
509  out << "( " << range.lower << " -- " << range.upper << " )";
510  return out;
511 } // operator<< (Range)
template<typename Stream , typename Data >
Stream & lar::util::simple_geo::operator<< ( Stream &&  out,
Rectangle< Data > const &  rect 
)

Prints the specified rectangle to a stream: "w=Wrange d=Drange".

Definition at line 537 of file SimpleGeo.h.

538 {
539  out << "w=" << rect.width << " d=" << rect.depth;
540  return out;
541 } // operator<< (Rectangle)
template<typename T >
bool lar::util::simple_geo::operator== ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 64 of file SimpleGeo.h.

65  { return (a.x == b.x) && (a.y == b.y); }
const double a
static bool * b
Definition: config.cpp:1043
template<typename T >
bool lar::util::simple_geo::operator== ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 97 of file SimpleGeo.h.

98  { return (a.x == b.x) && (a.y == b.y) && (a.z == b.z); }
const double a
static bool * b
Definition: config.cpp:1043