wfmath  1.0.3
A math library for the Worldforge system.
WFMath Namespace Reference

Generic library namespace. More...

Classes

class  Shape
 A fake class which documents the generic parts of the WFMath interface. More...
 
class  AtlasInType
 
class  AtlasOutType
 
class  AxisBox
 A dim dimensional axis-aligned box. More...
 
class  Ball
 A dim dimensional ball. More...
 
class  Point
 A dim dimensional point. More...
 
class  Polygon
 A polygon, all of whose points lie in a plane, embedded in dim dimensions. More...
 
class  RotBox
 A dim dimensional box, lying at an arbitrary angle. More...
 
class  RotMatrix
 A dim dimensional rotation matrix. Technically, a member of the group O(dim). More...
 
class  Segment
 A line segment embedded in dim dimensions. More...
 
class  Vector
 A dim dimensional vector. More...
 
struct  numeric_constants
 
struct  numeric_constants< float >
 
struct  numeric_constants< double >
 
struct  ColinearVectors
 An error thrown by certain functions when passed parallel vectors. More...
 
struct  ParseError
 An error thrown by operator>>() when it fails to parse wfmath types. More...
 
class  Line
 A dim dimensional line. More...
 
class  MTRand
 
class  ZeroPrimitive
 Utility class for providing zero primitives. This class will only work with simple structures such as Vector or Point which provide a m_elem structure. In order for it to access the m_elem structure it must be declared as a friend class of the class it will provide an instance of. More...
 
class  Polygon< 2 >
 The 2D specialization of the Polygon<> template. More...
 
class  Poly2Reorient
 
class  Poly2Orient
 
struct  Poly2OrientIntersectData
 
struct  LinePointData
 
class  Quaternion
 A normalized quaternion. More...
 
struct  PolyReader
 
class  TimeDiff
 The difference between two timestamps. More...
 
class  TimeStamp
 A time stamp. More...
 

Typedefs

typedef Atlas::Message::WrongTypeException _AtlasBadParse
 
typedef double CoordType
 Basic floating point type. More...
 

Enumerations

enum  Poly2ReorientType {
  WFMATH_POLY2REORIENT_NONE , WFMATH_POLY2REORIENT_CLEAR_AXIS2 , WFMATH_POLY2REORIENT_CLEAR_BOTH_AXES , WFMATH_POLY2REORIENT_MOVE_AXIS2_TO_AXIS1 ,
  WFMATH_POLY2REORIENT_SCALE1_CLEAR2
}
 

Functions

AtlasOutType _ArrayToAtlas (const CoordType *array, unsigned len)
 
void _ArrayFromAtlas (CoordType *array, unsigned len, const AtlasInType &a)
 
bool _ListNumCheck (const Atlas::Message::ListType &list, int dim)
 
template<template< int > class ShapeT>
void _AddCorner (ShapeT< 3 > &shape, const Atlas::Message::ListType &point)
 
template<template< int > class ShapeT>
void _AddCorner (ShapeT< 2 > &shape, const Atlas::Message::ListType &point)
 
template<template< int > class ShapeT, int dim>
void _CornersFromAtlas (ShapeT< dim > &shape, const Atlas::Message::Element &message)
 
template bool Intersection< 3 > (const AxisBox< 3 > &, const AxisBox< 3 > &, AxisBox< 3 > &)
 
template bool Intersection< 2 > (const AxisBox< 2 > &, const AxisBox< 2 > &, AxisBox< 2 > &)
 
template AxisBox< 3 > Union< 3 > (const AxisBox< 3 > &, const AxisBox< 3 > &)
 
template AxisBox< 2 > Union< 2 > (const AxisBox< 2 > &, const AxisBox< 2 > &)
 
template AxisBox< 3 > BoundingBox< 3, std::vector > (const std::vector< AxisBox< 3 >, std::allocator< AxisBox< 3 > > > &)
 
template AxisBox< 2 > BoundingBox< 2, std::vector > (const std::vector< AxisBox< 2 >, std::allocator< AxisBox< 2 > > > &)
 
template AxisBox< 3 > BoundingBox< 3, std::vector > (const std::vector< Point< 3 >, std::allocator< Point< 3 > > > &)
 
template AxisBox< 2 > BoundingBox< 2, std::vector > (const std::vector< Point< 2 >, std::allocator< Point< 2 > > > &)
 
template<int dim>
bool Intersection (const AxisBox< dim > &a1, const AxisBox< dim > &a2, AxisBox< dim > &out)
 
template<int dim>
AxisBox< dim > Union (const AxisBox< dim > &a1, const AxisBox< dim > &a2)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const AxisBox< dim > &m)
 
template<int dim>
std::istream & operator>> (std::istream &is, AxisBox< dim > &m)
 
template<int dim, template< class, class > class container>
AxisBox< dim > BoundingBox (const container< AxisBox< dim >, std::allocator< AxisBox< dim > > > &c)
 Get the axis-aligned bounding box for a set of boxes. More...
 
template<int dim, template< class, class > class container>
AxisBox< dim > BoundingBox (const container< Point< dim >, std::allocator< Point< dim > > > &c)
 Get the axis-aligned bounding box for a set of points. More...
 
template Ball< 2 > BoundingSphere< 2, std::vector > (std::vector< Point< 2 >, std::allocator< Point< 2 > > > const &)
 
template Ball< 2 > BoundingSphereSloppy< 2, std::vector > (std::vector< Point< 2 >, std::allocator< Point< 2 > > > const &)
 
template Ball< 3 > BoundingSphere< 3, std::vector > (std::vector< Point< 3 >, std::allocator< Point< 3 > > > const &)
 
template Ball< 3 > BoundingSphereSloppy< 3, std::vector > (std::vector< Point< 3 >, std::allocator< Point< 3 > > > const &)
 
template<int dim, template< class, class > class container>
Ball< dim > BoundingSphere (const container< Point< dim >, std::allocator< Point< dim > > > &c)
 get the minimal bounding sphere for a set of points More...
 
template<int dim, template< class, class > class container>
Ball< dim > BoundingSphereSloppy (const container< Point< dim >, std::allocator< Point< dim > > > &c)
 get a bounding sphere for a set of points More...
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Ball< dim > &m)
 
template<int dim>
std::istream & operator>> (std::istream &is, Ball< dim > &m)
 
void _CartToPolar (const CoordType *in, CoordType *out)
 
void _PolarToCart (const CoordType *in, CoordType *out)
 
void _CartToSpherical (const CoordType *in, CoordType *out)
 
void _SphericalToCart (const CoordType *in, CoordType *out)
 
bool Equal (double x1, double x2, double epsilon)
 
bool Equal (float x1, float x2, float epsilon)
 
double _ScaleEpsilon (double x1, double x2, double epsilon)
 
float _ScaleEpsilon (float x1, float x2, float epsilon)
 
CoordType _ScaleEpsilon (const CoordType *x1, const CoordType *x2, int length, CoordType epsilon)
 
template<class C >
bool Equal (const C &c1, const C &c2, CoordType epsilon=numeric_constants< CoordType >::epsilon())
 Test for equality up to precision epsilon. More...
 
CoordType FloatMax (CoordType a, CoordType b)
 
CoordType FloatMin (CoordType a, CoordType b)
 
CoordType FloatClamp (CoordType val, CoordType min, CoordType max)
 
double DoubleMax (double a, double b)
 
double DoubleMin (double a, double b)
 
double DoubleClamp (double val, double min, double max)
 
std::string IntToString (unsigned long val)
 
std::string IntToString (long val)
 
std::string IntToString (unsigned int val)
 
std::string IntToString (int val)
 
std::string IntToString (unsigned short val)
 
std::string IntToString (short val)
 
template<>
bool Intersect< 2 > (const RotBox< 2 > &r, const AxisBox< 2 > &b, bool proper)
 
template<>
bool Intersect< 3 > (const RotBox< 3 > &r, const AxisBox< 3 > &b, bool proper)
 
template bool Intersect< 2 > (const Point< 2 > &, const Point< 2 > &, bool)
 
template bool Intersect< 3 > (const Point< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 2 > (const Point< 2 > &, const Point< 2 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< Point< 2 >, AxisBox< 2 > > (const Point< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Intersect< Point< 3 >, AxisBox< 3 > > (const Point< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Contains< 2 > (const Point< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< 2 > (const AxisBox< 2 > &, const Point< 2 > &, bool)
 
template bool Intersect< 3 > (const AxisBox< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 2 > (const AxisBox< 2 > &, const Point< 2 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< 2 > (const AxisBox< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Intersect< 3 > (const AxisBox< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Contains< 2 > (const AxisBox< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< Point< 2 >, Ball< 2 > > (const Point< 2 > &, const Ball< 2 > &, bool)
 
template bool Intersect< Point< 3 >, Ball< 3 > > (const Point< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 2 > (const Point< 2 > &, const Ball< 2 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< 2 > (const Ball< 2 > &, const Point< 2 > &, bool)
 
template bool Intersect< 3 > (const Ball< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 2 > (const Ball< 2 > &, const Point< 2 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< AxisBox< 2 >, Ball< 2 > > (const AxisBox< 2 > &, const Ball< 2 > &, bool)
 
template bool Intersect< AxisBox< 3 >, Ball< 3 > > (const AxisBox< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 2 > (const AxisBox< 2 > &, const Ball< 2 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< 2 > (const Ball< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Intersect< 3 > (const Ball< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Contains< 2 > (const Ball< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< 2 > (const Ball< 2 > &, const Ball< 2 > &, bool)
 
template bool Intersect< 3 > (const Ball< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 2 > (const Ball< 2 > &, const Ball< 2 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< Point< 2 >, Segment< 2 > > (const Point< 2 > &, const Segment< 2 > &, bool)
 
template bool Intersect< Point< 3 >, Segment< 3 > > (const Point< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 2 > (const Point< 2 > &, const Segment< 2 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< 2 > (const Segment< 2 > &, const Point< 2 > &, bool)
 
template bool Intersect< 3 > (const Segment< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 2 > (const Segment< 2 > &, const Point< 2 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< AxisBox< 2 >, Segment< 2 > > (const AxisBox< 2 > &, const Segment< 2 > &, bool)
 
template bool Intersect< AxisBox< 3 >, Segment< 3 > > (const AxisBox< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 2 > (const AxisBox< 2 > &, const Segment< 2 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< 2 > (const Segment< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Intersect< 3 > (const Segment< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Contains< 2 > (const Segment< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< Ball< 2 >, Segment< 2 > > (const Ball< 2 > &, const Segment< 2 > &, bool)
 
template bool Intersect< Ball< 3 >, Segment< 3 > > (const Ball< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 2 > (const Ball< 2 > &, const Segment< 2 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< 2 > (const Segment< 2 > &, const Ball< 2 > &, bool)
 
template bool Intersect< 3 > (const Segment< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 2 > (const Segment< 2 > &, const Ball< 2 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< 2 > (const Segment< 2 > &, const Segment< 2 > &, bool)
 
template bool Intersect< 3 > (const Segment< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 2 > (const Segment< 2 > &, const Segment< 2 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< Point< 2 >, RotBox< 2 > > (const Point< 2 > &, const RotBox< 2 > &, bool)
 
template bool Intersect< Point< 3 >, RotBox< 3 > > (const Point< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const Point< 2 > &, const RotBox< 2 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const RotBox< 3 > &, bool)
 
template bool Intersect< 2 > (const RotBox< 2 > &, const Point< 2 > &, bool)
 
template bool Intersect< 3 > (const RotBox< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 2 > (const RotBox< 2 > &, const Point< 2 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< AxisBox< 2 >, RotBox< 2 > > (const AxisBox< 2 > &, const RotBox< 2 > &, bool)
 
template bool Intersect< AxisBox< 3 >, RotBox< 3 > > (const AxisBox< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const AxisBox< 2 > &, const RotBox< 2 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const RotBox< 2 > &, const AxisBox< 2 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< Ball< 2 >, RotBox< 2 > > (const Ball< 2 > &, const RotBox< 2 > &, bool)
 
template bool Intersect< Ball< 3 >, RotBox< 3 > > (const Ball< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const Ball< 2 > &, const RotBox< 2 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const RotBox< 3 > &, bool)
 
template bool Intersect< 2 > (const RotBox< 2 > &, const Ball< 2 > &, bool)
 
template bool Intersect< 3 > (const RotBox< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 2 > (const RotBox< 2 > &, const Ball< 2 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< Segment< 2 >, RotBox< 2 > > (const Segment< 2 > &, const RotBox< 2 > &, bool)
 
template bool Intersect< Segment< 3 >, RotBox< 3 > > (const Segment< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const Segment< 2 > &, const RotBox< 2 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const RotBox< 3 > &, bool)
 
template bool Intersect< 2 > (const RotBox< 2 > &, const Segment< 2 > &, bool)
 
template bool Intersect< 3 > (const RotBox< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 2 > (const RotBox< 2 > &, const Segment< 2 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< 2 > (const RotBox< 2 > &, const RotBox< 2 > &, bool)
 
template bool Intersect< 3 > (const RotBox< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 2 > (const RotBox< 2 > &, const RotBox< 2 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const RotBox< 3 > &, bool)
 
template<class S1 , class S2 >
bool Intersect (const S1 &s1, const S2 &s2, bool proper)
 
template<int dim>
bool Intersect (const Point< dim > &p1, const Point< dim > &p2, bool proper)
 
template<int dim, class S >
bool Contains (const S &s, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p1, const Point< dim > &p2, bool proper)
 
template<int dim>
bool Intersect (const AxisBox< dim > &b, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Intersect (const AxisBox< dim > &b1, const AxisBox< dim > &b2, bool proper)
 
template<int dim>
bool Contains (const AxisBox< dim > &outer, const AxisBox< dim > &inner, bool proper)
 
template<int dim>
bool Intersect (const Ball< dim > &b, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Intersect (const Ball< dim > &b, const AxisBox< dim > &a, bool proper)
 
template<int dim>
bool Contains (const Ball< dim > &b, const AxisBox< dim > &a, bool proper)
 
template<int dim>
bool Contains (const AxisBox< dim > &a, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Intersect (const Ball< dim > &b1, const Ball< dim > &b2, bool proper)
 
template<int dim>
bool Contains (const Ball< dim > &outer, const Ball< dim > &inner, bool proper)
 
template<int dim>
bool Intersect (const Segment< dim > &s, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Intersect (const Segment< dim > &s, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Segment< dim > &s, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const AxisBox< dim > &b, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Intersect (const Segment< dim > &s, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Ball< dim > &b, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Contains (const Segment< dim > &s, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Intersect (const Segment< dim > &s1, const Segment< dim > &s2, bool proper)
 
template<int dim>
bool Contains (const Segment< dim > &s1, const Segment< dim > &s2, bool proper)
 
template<int dim>
bool Intersect (const RotBox< dim > &r, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Intersect (const RotBox< dim > &r, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const RotBox< dim > &r, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const AxisBox< dim > &b, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Intersect (const RotBox< dim > &r, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Contains (const RotBox< dim > &r, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Ball< dim > &b, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Intersect (const RotBox< dim > &r, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Contains (const RotBox< dim > &r, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Contains (const Segment< dim > &s, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Intersect (const RotBox< dim > &r1, const RotBox< dim > &r2, bool proper)
 
template<int dim>
bool Contains (const RotBox< dim > &outer, const RotBox< dim > &inner, bool proper)
 
bool _Less (CoordType x1, CoordType x2, bool proper)
 
bool _LessEq (CoordType x1, CoordType x2, bool proper)
 
bool _Greater (CoordType x1, CoordType x2, bool proper)
 
bool _GreaterEq (CoordType x1, CoordType x2, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &r, const Point< dim > &p, bool proper)
 
template<int dim>
bool Contains (const Point< dim > &p, const Polygon< dim > &r, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &p, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Polygon< dim > &p, const AxisBox< dim > &b, bool proper)
 
template<int dim>
bool Contains (const AxisBox< dim > &b, const Polygon< dim > &p, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &p, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Polygon< dim > &p, const Ball< dim > &b, bool proper)
 
template<int dim>
bool Contains (const Ball< dim > &b, const Polygon< dim > &p, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &p, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Contains (const Polygon< dim > &p, const Segment< dim > &s, bool proper)
 
template<int dim>
bool Contains (const Segment< dim > &s, const Polygon< dim > &p, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &p, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Contains (const Polygon< dim > &p, const RotBox< dim > &r, bool proper)
 
template<int dim>
bool Contains (const RotBox< dim > &r, const Polygon< dim > &p, bool proper)
 
template<int dim>
bool Intersect (const Polygon< dim > &p1, const Polygon< dim > &p2, bool proper)
 
template<int dim>
bool Contains (const Polygon< dim > &outer, const Polygon< dim > &inner, bool proper)
 
std::ostream & operator<< (std::ostream &os, MTRand const &mtrand)
 
std::istream & operator>> (std::istream &is, MTRand &mtrand)
 
template CoordType SquaredDistance< 3 > (const Point< 3 > &, const Point< 3 > &)
 
template CoordType SquaredDistance< 2 > (const Point< 2 > &, const Point< 2 > &)
 
template Point< 3 > Midpoint< 3 > (const Point< 3 > &, const Point< 3 > &, CoordType)
 
template Point< 2 > Midpoint< 2 > (const Point< 2 > &, const Point< 2 > &, CoordType)
 
template Point< 3 > Barycenter< 3, std::vector > (const std::vector< Point< 3 > > &)
 
template Point< 3 > Barycenter< 3, std::vector, std::list > (const std::vector< Point< 3 > > &, const std::list< CoordType > &)
 
template Point< 2 > Barycenter< 2, std::vector > (const std::vector< Point< 2 > > &)
 
template Point< 2 > Barycenter< 2, std::vector, std::list > (const std::vector< Point< 2 > > &, const std::list< CoordType > &)
 
template Vector< 3 > operator-<3 > (const Point< 3 > &, const Point< 3 > &)
 
template Vector< 2 > operator-<2 > (const Point< 2 > &, const Point< 2 > &)
 
template Point< 3 > operator-<3 > (const Point< 3 > &, const Vector< 3 > &)
 
template Point< 2 > operator-<2 > (const Point< 2 > &, const Vector< 2 > &)
 
template Point< 3 > & operator-=<3 > (Point< 3 > &, const Vector< 3 > &)
 
template Point< 2 > & operator-=<2 > (Point< 2 > &, const Vector< 2 > &)
 
template Point< 3 > operator+<3 > (const Vector< 3 > &, const Point< 3 > &)
 
template Point< 2 > operator+<2 > (const Vector< 2 > &, const Point< 2 > &)
 
template Point< 3 > operator+<3 > (const Point< 3 > &, const Vector< 3 > &)
 
template Point< 2 > operator+<2 > (const Point< 2 > &, const Vector< 2 > &)
 
template Point< 3 > & operator+=<3 > (Point< 3 > &, const Vector< 3 > &)
 
template Point< 2 > & operator+=<2 > (Point< 2 > &, const Vector< 2 > &)
 
template<int dim>
Point< dim > & operator+= (Point< dim > &p, const Vector< dim > &v)
 
template<int dim>
Point< dim > & operator-= (Point< dim > &p, const Vector< dim > &v)
 
template<int dim>
Vector< dim > operator- (const Point< dim > &c1, const Point< dim > &c2)
 
template<int dim>
Point< dim > operator+ (const Point< dim > &c, const Vector< dim > &v)
 
template<int dim>
Point< dim > operator+ (const Vector< dim > &v, const Point< dim > &c)
 
template<int dim>
Point< dim > operator- (const Point< dim > &c, const Vector< dim > &v)
 
template<int dim>
CoordType SquaredDistance (const Point< dim > &p1, const Point< dim > &p2)
 
template<int dim>
CoordType Distance (const Point< dim > &p1, const Point< dim > &p2)
 
template<int dim>
CoordType SloppyDistance (const Point< dim > &p1, const Point< dim > &p2)
 
template<int dim, template< class, class > class container>
Point< dim > Barycenter (const container< Point< dim >, std::allocator< Point< dim > > > &c)
 Find the center of a set of points, all weighted equally. More...
 
template<int dim, template< class, class > class container, template< class, class > class container2>
Point< dim > Barycenter (const container< Point< dim >, std::allocator< Point< dim > > > &c, const container2< CoordType, std::allocator< CoordType > > &weights)
 Find the center of a set of points with the given weights. More...
 
template<int dim>
Point< dim > Midpoint (const Point< dim > &p1, const Point< dim > &p2, CoordType dist=0.5)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Point< dim > &m)
 
template<int dim>
std::istream & operator>> (std::istream &is, Point< dim > &m)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Polygon< dim > &r)
 
template<int dim>
std::istream & operator>> (std::istream &is, Polygon< dim > &r)
 
template<int dim>
int Intersect (const Poly2Orient< dim > &, const Poly2Orient< dim > &, Poly2OrientIntersectData &)
 
template<int dim>
bool _PolyContainsBox (const Poly2Orient< dim > &orient, const Polygon< 2 > &poly, const Point< dim > &corner, const Vector< dim > &size, bool proper)
 
bool PolyPolyIntersect (const Polygon< 2 > &poly1, const Polygon< 2 > &poly2, int intersect_dim, const Poly2OrientIntersectData &data, bool proper)
 
bool PolyPolyContains (const Polygon< 2 > &outer, const Polygon< 2 > &inner, int intersect_dim, const Poly2OrientIntersectData &data, bool proper)
 
template bool Intersect< Point< 2 >, Polygon< 2 > > (const Point< 2 > &, const Polygon< 2 > &, bool)
 
template bool Intersect< Point< 3 >, Polygon< 3 > > (const Point< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const Point< 3 > &, const Polygon< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const Point< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const Point< 3 > &, bool)
 
template bool Intersect< AxisBox< 2 >, Polygon< 2 > > (const AxisBox< 2 > &, const Polygon< 2 > &, bool)
 
template bool Intersect< AxisBox< 3 >, Polygon< 3 > > (const AxisBox< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const AxisBox< 3 > &, const Polygon< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const AxisBox< 3 > &, bool)
 
template bool Intersect< Ball< 2 >, Polygon< 2 > > (const Ball< 2 > &, const Polygon< 2 > &, bool)
 
template bool Intersect< Ball< 3 >, Polygon< 3 > > (const Ball< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const Ball< 3 > &, const Polygon< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const Ball< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const Ball< 3 > &, bool)
 
template bool Intersect< Segment< 2 >, Polygon< 2 > > (const Segment< 2 > &, const Polygon< 2 > &, bool)
 
template bool Intersect< Segment< 3 >, Polygon< 3 > > (const Segment< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const Segment< 3 > &, const Polygon< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const Segment< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const Segment< 3 > &, bool)
 
template bool Intersect< RotBox< 2 >, Polygon< 2 > > (const RotBox< 2 > &, const Polygon< 2 > &, bool)
 
template bool Intersect< RotBox< 3 >, Polygon< 3 > > (const RotBox< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const RotBox< 3 > &, const Polygon< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const RotBox< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const RotBox< 3 > &, bool)
 
template bool Intersect< 3 > (const Polygon< 3 > &, const Polygon< 3 > &, bool)
 
template bool Contains< 3 > (const Polygon< 3 > &, const Polygon< 3 > &, bool)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &r, const Point< 2 > &p, bool proper)
 
template<>
bool Contains< 2 > (const Point< 2 > &p, const Polygon< 2 > &r, bool proper)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &p, const AxisBox< 2 > &b, bool proper)
 
template<>
bool Contains< 2 > (const Polygon< 2 > &p, const AxisBox< 2 > &b, bool proper)
 
template<>
bool Contains< 2 > (const AxisBox< 2 > &b, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &p, const Ball< 2 > &b, bool proper)
 
template<>
bool Contains< 2 > (const Polygon< 2 > &p, const Ball< 2 > &b, bool proper)
 
template<>
bool Contains< 2 > (const Ball< 2 > &b, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &p, const Segment< 2 > &s, bool proper)
 
template<>
bool Contains< 2 > (const Polygon< 2 > &p, const Segment< 2 > &s, bool proper)
 
template<>
bool Contains< 2 > (const Segment< 2 > &s, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &p, const RotBox< 2 > &r, bool proper)
 
template<>
bool Contains< 2 > (const Polygon< 2 > &p, const RotBox< 2 > &r, bool proper)
 
template<>
bool Contains< 2 > (const RotBox< 2 > &r, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect< 2 > (const Polygon< 2 > &p1, const Polygon< 2 > &p2, bool proper)
 
template<>
bool Contains< 2 > (const Polygon< 2 > &outer, const Polygon< 2 > &inner, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &r, const Point< 2 > &p, bool proper)
 
template<>
bool Contains (const Point< 2 > &p, const Polygon< 2 > &r, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &p, const AxisBox< 2 > &b, bool proper)
 
template<>
bool Contains (const Polygon< 2 > &p, const AxisBox< 2 > &b, bool proper)
 
template<>
bool Contains (const AxisBox< 2 > &b, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &p, const Ball< 2 > &b, bool proper)
 
template<>
bool Contains (const Polygon< 2 > &p, const Ball< 2 > &b, bool proper)
 
template<>
bool Contains (const Ball< 2 > &b, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &p, const Segment< 2 > &s, bool proper)
 
template<>
bool Contains (const Polygon< 2 > &p, const Segment< 2 > &s, bool proper)
 
template<>
bool Contains (const Segment< 2 > &s, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &p, const RotBox< 2 > &r, bool proper)
 
template<>
bool Contains (const Polygon< 2 > &p, const RotBox< 2 > &r, bool proper)
 
template<>
bool Contains (const RotBox< 2 > &r, const Polygon< 2 > &p, bool proper)
 
template<>
bool Intersect (const Polygon< 2 > &p1, const Polygon< 2 > &p2, bool proper)
 
template<>
bool Contains (const Polygon< 2 > &outer, const Polygon< 2 > &inner, bool proper)
 
template<typename FloatT >
FloatT GaussianConditional (FloatT mean, FloatT stddev, FloatT val)
 Gives the conditional probability of the Gaussian distribution at position val. More...
 
template<typename FloatT >
FloatT Gaussian (FloatT mean, FloatT stddev, FloatT val)
 Gives the value of the Gaussian distribution at position val. More...
 
template<typename FloatT >
FloatT PoissonConditional (FloatT mean, unsigned int step)
 Gives the conditional probability of the Poisson distribution at position step. More...
 
template<typename FloatT >
FloatT Poisson (FloatT mean, unsigned int step)
 Gives the value of the Poisson distribution at position step. More...
 
template<typename FloatT >
FloatT Factorial (unsigned int n)
 Gives n! More...
 
template<typename FloatT >
FloatT LogFactorial (unsigned int n)
 Gives the natural log of n! More...
 
template<typename FloatT >
FloatT Gamma (FloatT z)
 Euler's Gamma function. More...
 
template<typename FloatT >
FloatT LogGamma (FloatT z)
 The natural log of Euler's Gamma function. More...
 
template float GaussianConditional< float > (float mean, float stddev, float val)
 
template float Gaussian< float > (float mean, float stddev, float val)
 
template float PoissonConditional< float > (float mean, unsigned int step)
 
template float Poisson< float > (float mean, unsigned int step)
 
template float LogFactorial< float > (unsigned int n)
 
template float Factorial< float > (unsigned int n)
 
template float LogGamma< float > (float z)
 
template float Gamma< float > (float z)
 
template double GaussianConditional< double > (double mean, double stddev, double val)
 
template double Gaussian< double > (double mean, double stddev, double val)
 
template double PoissonConditional< double > (double mean, unsigned int step)
 
template double Poisson< double > (double mean, unsigned int step)
 
template double LogFactorial< double > (unsigned int n)
 
template double Factorial< double > (unsigned int n)
 
template double LogGamma< double > (double z)
 
template double Gamma< double > (double z)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const RotBox< dim > &r)
 
template<int dim>
std::istream & operator>> (std::istream &is, RotBox< dim > &r)
 
bool _MatrixSetValsImpl (const int size, CoordType *vals, bool &flip, CoordType *buf1, CoordType *buf2, CoordType precision)
 
bool _MatrixInverseImpl (const int size, CoordType *in, CoordType *out)
 
template RotMatrix< 2 > operator*<2 > (RotMatrix< 2 > const &, RotMatrix< 2 > const &)
 
template RotMatrix< 3 > operator*<3 > (RotMatrix< 3 > const &, RotMatrix< 3 > const &)
 
template RotMatrix< 2 > ProdInv< 2 > (RotMatrix< 2 > const &, RotMatrix< 2 > const &)
 
template RotMatrix< 3 > ProdInv< 3 > (RotMatrix< 3 > const &, RotMatrix< 3 > const &)
 
template Vector< 2 > operator*<2 > (Vector< 2 > const &, RotMatrix< 2 > const &)
 
template Vector< 3 > operator*<3 > (Vector< 3 > const &, RotMatrix< 3 > const &)
 
template Vector< 2 > operator*<2 > (RotMatrix< 2 > const &, Vector< 2 > const &)
 
template Vector< 3 > operator*<3 > (RotMatrix< 3 > const &, Vector< 3 > const &)
 
template Vector< 2 > ProdInv< 2 > (Vector< 2 > const &, RotMatrix< 2 > const &)
 
template Vector< 3 > ProdInv< 3 > (Vector< 3 > const &, RotMatrix< 3 > const &)
 
template Vector< 3 > Prod< 3 > (Vector< 3 > const &, RotMatrix< 3 > const &)
 
template Vector< 2 > Prod< 2 > (Vector< 2 > const &, RotMatrix< 2 > const &)
 
template RotMatrix< 3 > Prod< 3 > (RotMatrix< 3 > const &, RotMatrix< 3 > const &)
 
template RotMatrix< 2 > Prod< 2 > (RotMatrix< 2 > const &, RotMatrix< 2 > const &)
 
template<int dim>
RotMatrix< dim > Prod (const RotMatrix< dim > &m1, const RotMatrix< dim > &m2)
 returns m1 * m2 More...
 
template<int dim>
RotMatrix< dim > ProdInv (const RotMatrix< dim > &m1, const RotMatrix< dim > &m2)
 returns m1 * m2^-1 More...
 
template<int dim>
RotMatrix< dim > InvProd (const RotMatrix< dim > &m1, const RotMatrix< dim > &m2)
 returns m1^-1 * m2 More...
 
template<int dim>
RotMatrix< dim > InvProdInv (const RotMatrix< dim > &m1, const RotMatrix< dim > &m2)
 returns m1^-1 * m2^-1 More...
 
template<int dim>
Vector< dim > Prod (const RotMatrix< dim > &m, const Vector< dim > &v)
 returns m * v More...
 
template<int dim>
Vector< dim > InvProd (const RotMatrix< dim > &m, const Vector< dim > &v)
 returns m^-1 * v More...
 
template<int dim>
Vector< dim > Prod (const Vector< dim > &v, const RotMatrix< dim > &m)
 returns v * m More...
 
template<int dim>
Vector< dim > ProdInv (const Vector< dim > &v, const RotMatrix< dim > &m)
 return v * m^-1 More...
 
template<int dim>
RotMatrix< dim > operator* (const RotMatrix< dim > &m1, const RotMatrix< dim > &m2)
 returns m1 * m2 More...
 
template<int dim>
Vector< dim > operator* (const RotMatrix< dim > &m, const Vector< dim > &v)
 
template<int dim>
Vector< dim > operator* (const Vector< dim > &v, const RotMatrix< dim > &m)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const RotMatrix< dim > &m)
 
template<int dim>
std::istream & operator>> (std::istream &is, RotMatrix< dim > &m)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Segment< dim > &s)
 
template<int dim>
std::istream & operator>> (std::istream &is, Segment< dim > &s)
 
template<class C >
void Shuffle (std::vector< C > &v)
 Randomly reorder the contents of a std::vector. More...
 
template std::ostream & operator<<< 3 > (std::ostream &os, const Vector< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, Vector< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const Vector< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, Vector< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const Point< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, Point< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const Point< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, Point< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const RotMatrix< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, RotMatrix< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const RotMatrix< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, RotMatrix< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const AxisBox< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, AxisBox< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const AxisBox< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, AxisBox< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const Ball< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, Ball< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const Ball< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, Ball< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const Segment< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, Segment< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const Segment< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, Segment< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const RotBox< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, RotBox< 3 > &r)
 
template std::ostream & operator<<< 2 > (std::ostream &os, const RotBox< 2 > &r)
 
template std::istream & operator>>< 2 > (std::istream &is, RotBox< 2 > &r)
 
template std::ostream & operator<<< 3 > (std::ostream &os, const Polygon< 3 > &r)
 
template std::istream & operator>>< 3 > (std::istream &is, Polygon< 3 > &r)
 
void WriteCoordList (std::ostream &os, const CoordType *d, const int num)
 
void ReadCoordList (std::istream &is, CoordType *d, const int num)
 
CoordType GetEpsilon (std::istream &is)
 
template<>
std::ostream & operator<< (std::ostream &os, const Polygon< 2 > &r)
 
template<>
std::istream & operator>> (std::istream &is, Polygon< 2 > &r)
 
std::ostream & operator<< (std::ostream &os, const Quaternion &q)
 
std::istream & operator>> (std::istream &is, Quaternion &q)
 
template<class C >
std::string ToString (const C &c, std::streamsize precision=6)
 Output a WFMath type as a string. More...
 
template<class C >
void FromString (C &c, const std::string &s, std::streamsize=6)
 Parse a WFMath type from a string. More...
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Vector< dim > &v)
 
template<int dim>
std::istream & operator>> (std::istream &is, Vector< dim > &v)
 
template<int dim>
std::ostream & operator<< (std::ostream &os, const Line< dim > &r)
 
TimeDiffoperator+= (TimeDiff &val, const TimeDiff &d)
 
TimeDiffoperator-= (TimeDiff &val, const TimeDiff &d)
 
TimeDiff operator+ (const TimeDiff &a, const TimeDiff &b)
 
TimeDiff operator- (const TimeDiff &a, const TimeDiff &b)
 
bool operator< (const TimeDiff &a, const TimeDiff &b)
 
bool operator== (const TimeDiff &a, const TimeDiff &b)
 
bool operator< (const TimeStamp &a, const TimeStamp &b)
 
bool operator== (const TimeStamp &a, const TimeStamp &b)
 
TimeStampoperator+= (TimeStamp &a, const TimeDiff &d)
 
TimeStampoperator-= (TimeStamp &a, const TimeDiff &d)
 
TimeStamp operator+ (const TimeStamp &a, const TimeDiff &d)
 
TimeStamp operator- (const TimeStamp &a, const TimeDiff &d)
 
TimeDiff operator- (const TimeStamp &a, const TimeStamp &b)
 
bool operator> (const TimeDiff &a, const TimeDiff &b)
 
bool operator<= (const TimeDiff &a, const TimeDiff &b)
 
bool operator>= (const TimeDiff &a, const TimeDiff &b)
 
bool operator!= (const TimeDiff &a, const TimeDiff &b)
 
TimeStamp operator+ (TimeDiff msec, const TimeStamp &a)
 
bool operator> (const TimeStamp &a, const TimeStamp &b)
 
bool operator<= (const TimeStamp &a, const TimeStamp &b)
 
bool operator>= (const TimeStamp &a, const TimeStamp &b)
 
bool operator!= (const TimeStamp &a, const TimeStamp &b)
 
CoordType Cross (const Vector< 2 > &v1, const Vector< 2 > &v2)
 2D only: get the z component of the cross product of two vectors More...
 
Vector< 3 > Cross (const Vector< 3 > &v1, const Vector< 3 > &v2)
 3D only: get the cross product of two vectors More...
 
template Vector< 3 > & operator-= (Vector< 3 > &v1, const Vector< 3 > &v2)
 
template Vector< 2 > & operator-= (Vector< 2 > &v1, const Vector< 2 > &v2)
 
template Vector< 3 > & operator+= (Vector< 3 > &v1, const Vector< 3 > &v2)
 
template Vector< 2 > & operator+= (Vector< 2 > &v1, const Vector< 2 > &v2)
 
template Vector< 3 > & operator*= (Vector< 3 > &v1, CoordType d)
 
template Vector< 2 > & operator*= (Vector< 2 > &v1, CoordType d)
 
template Vector< 3 > & operator/= (Vector< 3 > &v1, CoordType d)
 
template Vector< 2 > & operator/= (Vector< 2 > &v1, CoordType d)
 
template CoordType Dot< 3 > (const Vector< 3 > &, const Vector< 3 > &)
 
template CoordType Dot< 2 > (const Vector< 2 > &, const Vector< 2 > &)
 
template CoordType Angle< 3 > (const Vector< 3 > &, const Vector< 3 > &)
 
template Vector< 3 > operator-<3 > (const Vector< 3 > &)
 
template Vector< 3 > operator*<3 > (CoordType, const Vector< 3 > &)
 
template Vector< 2 > operator*<2 > (CoordType, const Vector< 2 > &)
 
template Vector< 3 > operator*<3 > (const Vector< 3 > &, CoordType)
 
template Vector< 2 > operator*<2 > (const Vector< 2 > &, CoordType)
 
template Vector< 3 > operator/<3 > (const Vector< 3 > &, CoordType)
 
template Vector< 2 > operator/<2 > (const Vector< 2 > &, CoordType)
 
template Vector< 3 > operator+<3 > (const Vector< 3 > &, const Vector< 3 > &)
 
template Vector< 2 > operator+<2 > (const Vector< 2 > &, const Vector< 2 > &)
 
template Vector< 3 > operator-<3 > (const Vector< 3 > &, const Vector< 3 > &)
 
template Vector< 2 > operator-<2 > (const Vector< 2 > &, const Vector< 2 > &)
 
template<int dim>
Vector< dim > & operator+= (Vector< dim > &v1, const Vector< dim > &v2)
 
template<int dim>
Vector< dim > & operator-= (Vector< dim > &v1, const Vector< dim > &v2)
 
template<int dim>
Vector< dim > & operator*= (Vector< dim > &v, CoordType d)
 
template<int dim>
Vector< dim > & operator/= (Vector< dim > &v, CoordType d)
 
template<int dim>
Vector< dim > operator+ (const Vector< dim > &v1, const Vector< dim > &v2)
 
template<int dim>
Vector< dim > operator- (const Vector< dim > &v1, const Vector< dim > &v2)
 
template<int dim>
Vector< dim > operator- (const Vector< dim > &v)
 
template<int dim>
Vector< dim > operator* (CoordType d, const Vector< dim > &v)
 
template<int dim>
Vector< dim > operator* (const Vector< dim > &v, CoordType d)
 
template<int dim>
Vector< dim > operator/ (const Vector< dim > &v, CoordType d)
 
template<int dim>
CoordType Dot (const Vector< dim > &v1, const Vector< dim > &v2)
 
template<int dim>
CoordType Angle (const Vector< dim > &v, const Vector< dim > &u)
 
template<int dim>
bool Parallel (const Vector< dim > &v1, const Vector< dim > &v2, bool &same_dir)
 Check if two vectors are parallel. More...
 
template<int dim>
bool Parallel (const Vector< dim > &v1, const Vector< dim > &v2)
 Check if two vectors are parallel. More...
 
template<int dim>
bool Perpendicular (const Vector< dim > &v1, const Vector< dim > &v2)
 Check if two vectors are perpendicular. More...
 

Detailed Description

Generic library namespace.

Timing related primitives in a portable fashion - note this is for interval / elapsed time measurement, not displaying a human readable time.

Typedef Documentation

◆ CoordType

typedef double WFMath::CoordType

Basic floating point type.

Definition at line 140 of file const.h.

Function Documentation

◆ Barycenter() [1/2]

template<int dim, template< class, class > class container>
Point< dim > WFMath::Barycenter ( const container< Point< dim >, std::allocator< Point< dim > > > &  c)

Find the center of a set of points, all weighted equally.

Definition at line 186 of file point_funcs.h.

References Barycenter().

Referenced by Barycenter(), and WFMath::Line< dim >::getCenter().

◆ Barycenter() [2/2]

template<int dim, template< class, class > class container, template< class, class > class container2>
Point< dim > WFMath::Barycenter ( const container< Point< dim >, std::allocator< Point< dim > > > &  c,
const container2< CoordType, std::allocator< CoordType > > &  weights 
)

Find the center of a set of points with the given weights.

If the number of points and the number of weights are not equal, the excess of either is ignored. The weights (or that subset which is used, if there are more weights than points), must not sum to zero.

Definition at line 138 of file point_funcs.h.

References Barycenter(), and WFMath::Point< dim >::setValid().

◆ BoundingBox() [1/2]

template<int dim, template< class, class > class container>
AxisBox< dim > WFMath::BoundingBox ( const container< AxisBox< dim >, std::allocator< AxisBox< dim > > > &  c)

Get the axis-aligned bounding box for a set of boxes.

Definition at line 130 of file axisbox_funcs.h.

References WFMath::Point< dim >::setValid().

◆ BoundingBox() [2/2]

template<int dim, template< class, class > class container>
AxisBox< dim > WFMath::BoundingBox ( const container< Point< dim >, std::allocator< Point< dim > > > &  c)

Get the axis-aligned bounding box for a set of points.

Definition at line 158 of file axisbox_funcs.h.

References WFMath::Point< dim >::setValid().

◆ BoundingSphere()

template<int dim, template< class, class > class container>
Ball< dim > WFMath::BoundingSphere ( const container< Point< dim >, std::allocator< Point< dim > > > &  c)

get the minimal bounding sphere for a set of points

Definition at line 57 of file ball_funcs.h.

References WFMath::Point< dim >::setValid().

◆ BoundingSphereSloppy()

template<int dim, template< class, class > class container>
Ball< dim > WFMath::BoundingSphereSloppy ( const container< Point< dim >, std::allocator< Point< dim > > > &  c)

get a bounding sphere for a set of points

Definition at line 92 of file ball_funcs.h.

References Midpoint(), and WFMath::Point< dim >::setValid().

◆ Cross() [1/2]

CoordType WFMath::Cross ( const Vector< 2 > &  v1,
const Vector< 2 > &  v2 
)

2D only: get the z component of the cross product of two vectors

Definition at line 102 of file vector.cpp.

Referenced by WFMath::Quaternion::rotation().

◆ Cross() [2/2]

Vector< 3 > WFMath::Cross ( const Vector< 3 > &  v1,
const Vector< 3 > &  v2 
)

3D only: get the cross product of two vectors

Definition at line 109 of file vector.cpp.

◆ Equal()

template<class C >
bool WFMath::Equal ( const C &  c1,
const C &  c2,
CoordType  epsilon = numeric_constants<CoordType>::epsilon() 
)
inline

Test for equality up to precision epsilon.

Returns true if the difference between the numbers is less than epsilon. Note that epsilon is multiplied by 2 raised to the power of the exponent of the smaller number. So, for example, Equal(0.00010000, 0.00010002, 1.0e-4) will not compare equal, but Equal(0.00010000, 0.00010002, 1.0e-3) will.

Definition at line 158 of file const.h.

◆ Factorial()

template<typename FloatT >
FloatT WFMath::Factorial ( unsigned int  n)

Gives n!

Definition at line 141 of file probability.cpp.

References LogGamma().

◆ FromString()

template<class C >
void WFMath::FromString ( C &  c,
const std::string &  s,
std::streamsize  = 6 
)
inline

Parse a WFMath type from a string.

This uses operator>>() in its backend.

Definition at line 110 of file stream.h.

◆ Gamma()

template<typename FloatT >
FloatT WFMath::Gamma ( FloatT  z)

Euler's Gamma function.

Definition at line 173 of file probability.cpp.

References LogGamma(), and WFMath::numeric_constants< FloatType >::pi().

◆ Gaussian()

template<typename FloatT >
FloatT WFMath::Gaussian ( FloatT  mean,
FloatT  stddev,
FloatT  val 
)

Gives the value of the Gaussian distribution at position val.

Definition at line 78 of file probability.cpp.

References WFMath::numeric_constants< FloatType >::sqrt2(), and WFMath::numeric_constants< FloatType >::sqrt_pi().

Referenced by GaussianConditional().

◆ GaussianConditional()

template<typename FloatT >
FloatT WFMath::GaussianConditional ( FloatT  mean,
FloatT  stddev,
FloatT  val 
)

Gives the conditional probability of the Gaussian distribution at position val.

The probability that a Gaussian random variable will fall between val and val + delta, given that it is already known to be not less than val, is given by this function multiplied by delta (for small delta).

Definition at line 51 of file probability.cpp.

References Gaussian().

◆ InvProd() [1/2]

template<int dim>
Vector< dim > WFMath::InvProd ( const RotMatrix< dim > &  m,
const Vector< dim > &  v 
)
inline

returns m^-1 * v

Definition at line 177 of file rotmatrix_funcs.h.

◆ InvProd() [2/2]

template<int dim>
RotMatrix< dim > WFMath::InvProd ( const RotMatrix< dim > &  m1,
const RotMatrix< dim > &  m2 
)
inline

returns m1^-1 * m2

Definition at line 116 of file rotmatrix_funcs.h.

Referenced by Prod().

◆ InvProdInv()

template<int dim>
RotMatrix< dim > WFMath::InvProdInv ( const RotMatrix< dim > &  m1,
const RotMatrix< dim > &  m2 
)
inline

returns m1^-1 * m2^-1

Definition at line 138 of file rotmatrix_funcs.h.

◆ LogFactorial()

template<typename FloatT >
FloatT WFMath::LogFactorial ( unsigned int  n)

Gives the natural log of n!

Definition at line 157 of file probability.cpp.

References LogGamma().

◆ LogGamma()

template<typename FloatT >
FloatT WFMath::LogGamma ( FloatT  z)

The natural log of Euler's Gamma function.

Definition at line 184 of file probability.cpp.

References WFMath::numeric_constants< FloatType >::log2(), and WFMath::numeric_constants< FloatType >::log_pi().

Referenced by Factorial(), Gamma(), and LogFactorial().

◆ Midpoint()

template<int dim>
Point< dim > WFMath::Midpoint ( const Point< dim > &  p1,
const Point< dim > &  p2,
CoordType  dist = 0.5 
)
inline

The default value of 0.5 for dist gives the midpoint. A value of 0 gives p1, and 1 gives p2. Values of dist outside the [0, 1] range are allowed, and give points on the line which are not on the segment bounded by p1 and p2.

Definition at line 219 of file point_funcs.h.

Referenced by BoundingSphereSloppy().

◆ operator*()

template<int dim>
RotMatrix< dim > WFMath::operator* ( const RotMatrix< dim > &  m1,
const RotMatrix< dim > &  m2 
)
inline

returns m1 * m2

Definition at line 206 of file rotmatrix_funcs.h.

References Prod().

◆ Parallel() [1/2]

template<int dim>
bool WFMath::Parallel ( const Vector< dim > &  v1,
const Vector< dim > &  v2 
)
inline

Check if two vectors are parallel.

Convienience wrapper if you don't care about same_dir

Definition at line 462 of file vector.h.

References Parallel().

◆ Parallel() [2/2]

template<int dim>
bool WFMath::Parallel ( const Vector< dim > &  v1,
const Vector< dim > &  v2,
bool &  same_dir 
)
inline

Check if two vectors are parallel.

Returns true if the vectors are parallel. For parallel vectors, same_dir is set to true if they point the same direction, and false if they point opposite directions

Definition at line 450 of file vector.h.

References Parallel(), and WFMath::Vector< dim >::sqrMag().

Referenced by Parallel().

◆ Perpendicular()

template<int dim>
bool WFMath::Perpendicular ( const Vector< dim > &  v1,
const Vector< dim > &  v2 
)

Check if two vectors are perpendicular.

Definition at line 233 of file vector_funcs.h.

References Perpendicular().

Referenced by Perpendicular().

◆ Poisson()

template<typename FloatT >
FloatT WFMath::Poisson ( FloatT  mean,
unsigned int  step 
)

Gives the value of the Poisson distribution at position step.

Definition at line 109 of file probability.cpp.

Referenced by PoissonConditional().

◆ PoissonConditional()

template<typename FloatT >
FloatT WFMath::PoissonConditional ( FloatT  mean,
unsigned int  step 
)

Gives the conditional probability of the Poisson distribution at position step.

Returns the probability that a Poisson random variable will have value step, given that it is already known not to be less than step.

Definition at line 90 of file probability.cpp.

References Poisson().

◆ Prod() [1/3]

template<int dim>
Vector< dim > WFMath::Prod ( const RotMatrix< dim > &  m,
const Vector< dim > &  v 
)
inline

returns m * v

Definition at line 160 of file rotmatrix_funcs.h.

◆ Prod() [2/3]

template<int dim>
RotMatrix< dim > WFMath::Prod ( const RotMatrix< dim > &  m1,
const RotMatrix< dim > &  m2 
)
inline

◆ Prod() [3/3]

template<int dim>
Vector< dim > WFMath::Prod ( const Vector< dim > &  v,
const RotMatrix< dim > &  m 
)
inline

returns v * m

This is the function to use to rotate a Vector v using a Matrix m

Definition at line 194 of file rotmatrix_funcs.h.

References InvProd().

◆ ProdInv() [1/2]

template<int dim>
RotMatrix< dim > WFMath::ProdInv ( const RotMatrix< dim > &  m1,
const RotMatrix< dim > &  m2 
)
inline

returns m1 * m2^-1

Definition at line 94 of file rotmatrix_funcs.h.

◆ ProdInv() [2/2]

template<int dim>
Vector< dim > WFMath::ProdInv ( const Vector< dim > &  v,
const RotMatrix< dim > &  m 
)
inline

return v * m^-1

Definition at line 200 of file rotmatrix_funcs.h.

References Prod().

◆ Shuffle()

template<class C >
void WFMath::Shuffle ( std::vector< C > &  v)

Randomly reorder the contents of a std::vector.

For things like shuffling a deck of cards, etc.

Definition at line 40 of file shuffle.h.

◆ ToString()

template<class C >
std::string WFMath::ToString ( const C &  c,
std::streamsize  precision = 6 
)
inline

Output a WFMath type as a string.

This uses operator<<() in its backend.

Definition at line 100 of file stream.h.