Analytical Geometry
[Mathematics]


Functions

template<typename T >
BALL_INLINE T BALL::getDeterminant_ (const T *m, Size dim)
template<typename T >
BALL::getDeterminant (const T *m, Size dim)
template<typename T >
BALL_INLINE T BALL::getDeterminant2 (const T *m)
template<typename T >
BALL_INLINE T BALL::getDeterminant2 (const T &m00, const T &m01, const T &m10, const T &m11)
template<typename T >
BALL_INLINE T BALL::getDeterminant3 (const T *m)
template<typename T >
BALL_INLINE T BALL::getDeterminant3 (const T &m00, const T &m01, const T &m02, const T &m10, const T &m11, const T &m12, const T &m20, const T &m21, const T &m22)
template<typename T >
bool BALL::SolveSystem (const T *m, T *x, const Size dim)
template<typename T >
BALL_INLINE bool BALL::SolveSystem2 (const T &a1, const T &b1, const T &c1, const T &a2, const T &b2, const T &c2, T &x1, T &x2)
template<typename T >
short BALL::SolveQuadraticEquation (const T &a, const T &b, const T &c, T &x1, T &x2)
template<typename T >
BALL_INLINE TVector3< T > BALL::GetPartition (const TVector3< T > &a, const TVector3< T > &b)
template<typename T >
BALL_INLINE TVector3< T > BALL::GetPartition (const TVector3< T > &a, const TVector3< T > &b, const T &r, const T &s) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TVector3< T > &a, const TVector3< T > &b)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TLine3< T > &line, const TVector3< T > &point) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TVector3< T > &point, const TLine3< T > &line) throw (Exception::DivisionByZero)
template<typename T >
BALL::GetDistance (const TLine3< T > &a, const TLine3< T > &b) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TVector3< T > &point, const TPlane3< T > &plane) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TPlane3< T > &plane, const TVector3< T > &point) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TLine3< T > &line, const TPlane3< T > &plane) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TPlane3< T > &plane, const TLine3< T > &line) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE T BALL::GetDistance (const TPlane3< T > &a, const TPlane3< T > &b) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TVector3< T > &a, const TVector3< T > &b, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TLine3< T > &a, const TLine3< T > &b, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TPlane3< T > &plane, const TVector3< T > &vector, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TVector3< T > &vector, const TPlane3< T > &plane, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TPlane3< T > &plane, const TLine3< T > &line, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TLine3< T > &line, const TPlane3< T > &plane, TAngle< T > &intersection_angle)
template<typename T >
BALL_INLINE bool BALL::GetAngle (const TPlane3< T > &a, const TPlane3< T > &b, TAngle< T > &intersection_angle)
template<typename T >
bool BALL::GetIntersection (const TLine3< T > &a, const TLine3< T > &b, TVector3< T > &point)
template<typename T >
BALL_INLINE bool BALL::GetIntersection (const TPlane3< T > &plane, const TLine3< T > &line, TVector3< T > &intersection_point)
template<typename T >
BALL_INLINE bool BALL::GetIntersection (const TLine3< T > &line, const TPlane3< T > &plane, TVector3< T > &intersection_point)
template<typename T >
bool BALL::GetIntersection (const TPlane3< T > &plane1, const TPlane3< T > &plane2, TLine3< T > &line)
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &sphere, const TLine3< T > &line, TVector3< T > &intersection_point1, TVector3< T > &intersection_point2)
template<typename T >
BALL_INLINE bool BALL::GetIntersection (const TLine3< T > &line, const TSphere3< T > &sphere, TVector3< T > &intersection_point1, TVector3< T > &intersection_point2)
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &sphere, const TPlane3< T > &plane, TCircle3< T > &intersection_circle)
template<typename T >
BALL_INLINE bool BALL::GetIntersection (const TPlane3< T > &plane, const TSphere3< T > &sphere, TCircle3< T > &intersection_circle)
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &a, const TSphere3< T > &b, TCircle3< T > &intersection_circle)
template<class T >
bool BALL::GetIntersection (const TSphere3< T > &s1, const TSphere3< T > &s2, const TSphere3< T > &s3, TVector3< T > &p1, TVector3< T > &p2, bool test=true)
template<typename T >
BALL_INLINE bool BALL::isCollinear (const TVector3< T > &a, const TVector3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isComplanar (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &c)
template<typename T >
BALL_INLINE bool BALL::isComplanar (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &c, const TVector3< T > &d)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TVector3< T > &a, const TVector3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TVector3< T > &vector, const TLine3< T > &line)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TLine3< T > &line, const TVector3< T > &vector)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TLine3< T > &a, const TLine3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TVector3< T > &vector, const TPlane3< T > &plane)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TPlane3< T > &plane, const TVector3< T > &vector)
template<typename T >
BALL_INLINE bool BALL::isOrthogonal (const TPlane3< T > &a, const TPlane3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TVector3< T > &point, const TLine3< T > &line)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TLine3< T > &line, const TVector3< T > &point)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TLine3< T > &a, const TLine3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TVector3< T > &point, const TPlane3< T > &plane)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TPlane3< T > &plane, const TVector3< T > &point)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TLine3< T > &line, const TPlane3< T > &plane)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TPlane3< T > &plane, const TLine3< T > &line)
template<typename T >
BALL_INLINE bool BALL::isIntersecting (const TPlane3< T > &a, const TPlane3< T > &b)
template<typename T >
BALL_INLINE bool BALL::isParallel (const TLine3< T > &line, const TPlane3< T > &plane)
template<typename T >
BALL_INLINE bool BALL::isParallel (const TPlane3< T > &plane, const TLine3< T > &line)
template<typename T >
BALL_INLINE bool BALL::isParallel (const TPlane3< T > &a, const TPlane3< T > &b)
template<typename T >
TAngle< T > BALL::getOrientedAngle (const T &ax, const T &ay, const T &az, const T &bx, const T &by, const T &bz, const T &nx, const T &ny, const T &nz) throw (Exception::DivisionByZero)
template<typename T >
BALL_INLINE TAngle< T > BALL::getOrientedAngle (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &normal) throw (Exception::DivisionByZero)
template<typename T >
TAngle< T > BALL::getTorsionAngle (const T &ax, const T &ay, const T &az, const T &bx, const T &by, const T &bz, const T &cx, const T &cy, const T &cz, const T &dx, const T &dy, const T &dz) throw (Exception::DivisionByZero)

Detailed Description

representation of analytical geometry functions, using the classes: TAngle, TCircle3, TLine3, TPlane3, TSphere3, TVector3.


Function Documentation

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TPlane3< T > &  a,
const TPlane3< T > &  b,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between two planes.

Parameters:
a the first plane
b the second plane
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::Maths::abs(), BALL::Maths::isZero(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TLine3< T > &  line,
const TPlane3< T > &  plane,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between a line and a plane.

Parameters:
line the line
plane the plane
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::GetAngle().

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TPlane3< T > &  plane,
const TLine3< T > &  line,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between a plane and a line.

Parameters:
plane the plane
line the line
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::Maths::abs(), BALL::TLine3< T >::d, BALL::Maths::isZero(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TVector3< T > &  vector,
const TPlane3< T > &  plane,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between a vector3 and a plane.

Parameters:
vector the vector3
plane the plane
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::GetAngle().

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TPlane3< T > &  plane,
const TVector3< T > &  vector,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between a plane and a Vector3.

Parameters:
plane the plane
vector the Vector3
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::Maths::abs(), BALL::TVector3< T >::getSquareLength(), BALL::Maths::isZero(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TLine3< T > &  a,
const TLine3< T > &  b,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between two lines.

Parameters:
a the first line
b the second line
intersection_angle the resulting angle
Returns:
bool, true if an angle can be calculated, otherwise false

References BALL::Maths::abs(), BALL::TLine3< T >::d, and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::GetAngle ( const TVector3< T > &  a,
const TVector3< T > &  b,
TAngle< T > &  intersection_angle 
) [inline]

Get the angle between two Vector3.

Parameters:
a the first vector
b the second vector
intersection_angle the resulting angle
Returns:
bool, always true

References BALL::TVector3< T >::getAngle(), BALL::TVector3< T >::getSquareLength(), and BALL::Maths::isZero().

Referenced by BALL::GetAngle().

template<typename T >
T BALL::getDeterminant ( const T *  m,
Size  dim 
) [inline]

Get the determinant of any matrix.

Parameters:
m pointer to matrix
dim dimension of the matrix

References BALL_CELL, and BALL::getDeterminant_().

template<typename T >
BALL_INLINE T BALL::getDeterminant2 ( const T &  m00,
const T &  m01,
const T &  m10,
const T &  m11 
) [inline]

Get the determinant of an 2x2 matrix.

Parameters:
m00 first value of the matrix
m01 second value of the matrix
m10 third value of the matrix
m11 fourth value of the matrix
template<typename T >
BALL_INLINE T BALL::getDeterminant2 ( const T *  m  )  [inline]

Get the determinant of an 2x2 matrix.

Parameters:
m pointer to matrix

References BALL_CELL.

template<typename T >
BALL_INLINE T BALL::getDeterminant3 ( const T &  m00,
const T &  m01,
const T &  m02,
const T &  m10,
const T &  m11,
const T &  m12,
const T &  m20,
const T &  m21,
const T &  m22 
) [inline]

Get the determinant of an 3x3 matrix.

Parameters:
m00,m01,m02,m10,m11,m12,m20,m21,m22 the elements of the matrix
template<typename T >
BALL_INLINE T BALL::getDeterminant3 ( const T *  m  )  [inline]

Get the determinant of an 3x3 matrix.

Parameters:
m pointer to matrix

References BALL_CELL.

template<typename T >
BALL_INLINE T BALL::getDeterminant_ ( const T *  m,
Size  dim 
) [inline]

Subroutine to get the determinant of any matrix. Direct usage of this function should be avoided. Instead use T getDeterminant(const T* m, Size dim)

Parameters:
m pointer to matrix
dim dimension of the matrix

References BALL::Constants::k.

Referenced by BALL::getDeterminant().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TPlane3< T > &  a,
const TPlane3< T > &  b 
) throw (Exception::DivisionByZero) [inline]

Get the distance between two planes.

Parameters:
a the first plane
b the second plane
Returns:
T the distance

References BALL::Maths::abs().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TPlane3< T > &  plane,
const TLine3< T > &  line 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a plane and a line.

Parameters:
plane the plane
line the line
Returns:
T the distance

References BALL::GetDistance().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TLine3< T > &  line,
const TPlane3< T > &  plane 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a line and a plane.

Parameters:
line the line
plane the plane
Returns:
T the distance

References BALL::Maths::abs().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TPlane3< T > &  plane,
const TVector3< T > &  point 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a plane and a point.

Parameters:
plane the plane
point the point
Returns:
T the distance

References BALL::GetDistance().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TVector3< T > &  point,
const TPlane3< T > &  plane 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a point and a plane.

Parameters:
point the point
plane the plane
Returns:
T the distance

References BALL::Maths::abs().

template<typename T >
T BALL::GetDistance ( const TLine3< T > &  a,
const TLine3< T > &  b 
) throw (Exception::DivisionByZero) [inline]

Get the distance between two lines.

Parameters:
a the first line
b the second line
Returns:
T the distance

References BALL::Maths::abs(), BALL::TVector3< T >::getTripleProduct(), BALL::Maths::isNotZero(), and BALL::Maths::isZero().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TVector3< T > &  point,
const TLine3< T > &  line 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a point and a line.

Parameters:
point the point
line the line
Returns:
T the distance

References BALL::GetDistance().

template<typename T >
BALL_INLINE T BALL::GetDistance ( const TLine3< T > &  line,
const TVector3< T > &  point 
) throw (Exception::DivisionByZero) [inline]

Get the distance between a line and a point.

Parameters:
line the line
point the point
Returns:
T the distance
template<typename T >
BALL_INLINE T BALL::GetDistance ( const TVector3< T > &  a,
const TVector3< T > &  b 
) [inline]

Get the distance between two points.

Parameters:
a the first point
b the second point
Returns:
T the distance

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

Referenced by BALL::GetDistance(), BALL::GetIntersection(), and BALL::isIntersecting().

template<class T >
bool BALL::GetIntersection ( const TSphere3< T > &  s1,
const TSphere3< T > &  s2,
const TSphere3< T > &  s3,
TVector3< T > &  p1,
TVector3< T > &  p2,
bool  test = true 
) [inline]

Get the intersection points between three spheres.

Parameters:
s1 the first sphere
s2 the second sphere
s3 the third sphere
p1 the first intersection point
p2 the second intersection point
test 
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::TLine3< T >::d, BALL::GetIntersection(), BALL::Maths::isNotEqual(), BALL::TLine3< T >::p, BALL::TSphere3< T >::p, BALL::TSphere3< T >::radius, and BALL::SolveQuadraticEquation().

template<typename T >
bool BALL::GetIntersection ( const TSphere3< T > &  a,
const TSphere3< T > &  b,
TCircle3< T > &  intersection_circle 
) [inline]

Get the intersection circle between two spheres. This methods returns false, if the two spheres are identical, since then no intersection circle exists.

Parameters:
a the first sphere
b the second sphere
intersection_circle the intersection circle
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::Maths::abs(), BALL::Maths::isGreaterOrEqual(), BALL::Maths::isLess(), BALL::Maths::isZero(), BALL::TCircle3< T >::n, BALL::TCircle3< T >::p, BALL::TSphere3< T >::p, BALL::TCircle3< T >::radius, and BALL::TSphere3< T >::radius.

template<typename T >
BALL_INLINE bool BALL::GetIntersection ( const TPlane3< T > &  plane,
const TSphere3< T > &  sphere,
TCircle3< T > &  intersection_circle 
) [inline]

Get the intersection circle between a plane and a sphere.

Parameters:
plane the plane
sphere the sphere
intersection_circle the intersection circle
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::GetIntersection().

template<typename T >
bool BALL::GetIntersection ( const TSphere3< T > &  sphere,
const TPlane3< T > &  plane,
TCircle3< T > &  intersection_circle 
) [inline]

Get the intersection circle between a sphere and a plane.

Parameters:
sphere the sphere
plane the plane
intersection_circle the intersection circle
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::GetDistance(), BALL::Maths::isEqual(), BALL::Maths::isGreater(), BALL::TPlane3< T >::n, BALL::TVector3< T >::normalize(), BALL::TSphere3< T >::p, BALL::TSphere3< T >::radius, and BALL::TCircle3< T >::set().

template<typename T >
BALL_INLINE bool BALL::GetIntersection ( const TLine3< T > &  line,
const TSphere3< T > &  sphere,
TVector3< T > &  intersection_point1,
TVector3< T > &  intersection_point2 
) [inline]

Get the intersection point between a line and a sphere.

Parameters:
line the line
sphere the sphere
intersection_point1 the first intersection point
intersection_point2 the second intersection point
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::GetIntersection().

template<typename T >
bool BALL::GetIntersection ( const TSphere3< T > &  sphere,
const TLine3< T > &  line,
TVector3< T > &  intersection_point1,
TVector3< T > &  intersection_point2 
) [inline]

Get the intersection point between a sphere and a line.

Parameters:
sphere the sphere
line the line
intersection_point1 the first intersection point
intersection_point2 the second intersection point
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::TLine3< T >::d, BALL::TSphere3< T >::p, BALL::TLine3< T >::p, BALL::TSphere3< T >::radius, and BALL::SolveQuadraticEquation().

template<typename T >
bool BALL::GetIntersection ( const TPlane3< T > &  plane1,
const TPlane3< T > &  plane2,
TLine3< T > &  line 
) [inline]

Get the intersection line between two planes.

Parameters:
plane1 the first plane
plane2 the second plane
line the resulting intersection
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::Constants::c, BALL::TLine3< T >::d, BALL::Maths::isZero(), BALL::TPlane3< T >::n, BALL::TLine3< T >::p, and BALL::TPlane3< T >::p.

template<typename T >
BALL_INLINE bool BALL::GetIntersection ( const TLine3< T > &  line,
const TPlane3< T > &  plane,
TVector3< T > &  intersection_point 
) [inline]

Get the intersection point between a line and a plane.

Parameters:
line the line
plane the plane
intersection_point the resulting intersection
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::GetIntersection().

template<typename T >
BALL_INLINE bool BALL::GetIntersection ( const TPlane3< T > &  plane,
const TLine3< T > &  line,
TVector3< T > &  intersection_point 
) [inline]

Get the intersection point between a plane and a line.

Parameters:
plane the plane
line the line
intersection_point the resulting intersection
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::TLine3< T >::d, BALL::Maths::isZero(), BALL::TPlane3< T >::n, BALL::TPlane3< T >::p, BALL::TLine3< T >::p, and BALL::TVector3< T >::set().

template<typename T >
bool BALL::GetIntersection ( const TLine3< T > &  a,
const TLine3< T > &  b,
TVector3< T > &  point 
) [inline]

Get the intersection point between two lines.

Parameters:
a the first line
b the second line
point the resulting intersection
Returns:
bool, true if an intersection can be calculated, otherwise false

References BALL::TLine3< T >::d, BALL::Maths::isEqual(), BALL::TLine3< T >::p, BALL::TVector3< T >::set(), and BALL::SolveSystem2().

Referenced by BALL::GetIntersection().

template<typename T >
BALL_INLINE TAngle<T> BALL::getOrientedAngle ( const TVector3< T > &  a,
const TVector3< T > &  b,
const TVector3< T > &  normal 
) throw (Exception::DivisionByZero) [inline]

Return the oriented angle of two vectors with a normal vector.

References BALL::getOrientedAngle().

template<typename T >
TAngle<T> BALL::getOrientedAngle ( const T &  ax,
const T &  ay,
const T &  az,
const T &  bx,
const T &  by,
const T &  bz,
const T &  nx,
const T &  ny,
const T &  nz 
) throw (Exception::DivisionByZero) [inline]

Return the oriented angle of two vectors with a normal vector.

References BALL::Constants::PI.

Referenced by BALL::getOrientedAngle().

template<typename T >
BALL_INLINE TVector3<T> BALL::GetPartition ( const TVector3< T > &  a,
const TVector3< T > &  b,
const T &  r,
const T &  s 
) throw (Exception::DivisionByZero) [inline]

Get the partition of two vectors, calculated with two ratio factors.

Parameters:
a the first vector
b the second vector
r the ratio factor of the first vector
s the ratio factor of the second vector
Returns:
TVector3 the partition
template<typename T >
BALL_INLINE TVector3<T> BALL::GetPartition ( const TVector3< T > &  a,
const TVector3< T > &  b 
) [inline]

Get the partition of two vectors.

Parameters:
a the first vector
b the second vector
Returns:
TVector3 the partition

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
TAngle<T> BALL::getTorsionAngle ( const T &  ax,
const T &  ay,
const T &  az,
const T &  bx,
const T &  by,
const T &  bz,
const T &  cx,
const T &  cy,
const T &  cz,
const T &  dx,
const T &  dy,
const T &  dz 
) throw (Exception::DivisionByZero) [inline]

Return the torsion angle of four points to each other.

Parameters:
ax 1. vector x component
ay 1. vector y component
az 1. vector z component
bx 2. vector x component
by 2. vector y component
bz 2. vector z component
cx 3. vector x component
cy 3. vector y component
cz 3. vector z component
dx 4. vector x component
dy 4. vector y component
dz 4. vector z component
Returns:
TAngle the torsion angle

References BALL::Constants::PI.

template<typename T >
BALL_INLINE bool BALL::isCollinear ( const TVector3< T > &  a,
const TVector3< T > &  b 
) [inline]

Test whether two vector3 are collinear

Parameters:
a the first vector3
b the second vector3
Returns:
bool, true or false

Referenced by BALL::isOrthogonal(), and BALL::isParallel().

template<typename T >
BALL_INLINE bool BALL::isComplanar ( const TVector3< T > &  a,
const TVector3< T > &  b,
const TVector3< T > &  c,
const TVector3< T > &  d 
) [inline]

Test whether four vector3 are complanar

Parameters:
a the first vector3
b the second vector3
c the third vector3
d the fourth vector3
Returns:
bool, true or false

References BALL::isComplanar().

template<typename T >
BALL_INLINE bool BALL::isComplanar ( const TVector3< T > &  a,
const TVector3< T > &  b,
const TVector3< T > &  c 
) [inline]

Test whether three vector3 are complanar

Parameters:
a the first vector3
b the second vector3
c the third vector3
Returns:
bool, true or false

References BALL::Maths::isZero().

Referenced by BALL::isComplanar().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TPlane3< T > &  a,
const TPlane3< T > &  b 
) [inline]

Test whether two planes are intersecting.

Parameters:
a the first plane
b the second plane
Returns:
bool, true or false

References BALL::GetDistance(), and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TPlane3< T > &  plane,
const TLine3< T > &  line 
) [inline]

Test whether a plane is intersecting a line.

Parameters:
plane the plane
line the line
Returns:
bool, true or false

References BALL::isIntersecting().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TLine3< T > &  line,
const TPlane3< T > &  plane 
) [inline]

Test whether a line is intersecting a plane.

Parameters:
line the line
plane the plane
Returns:
bool, true or false

References BALL::GetDistance(), and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TPlane3< T > &  plane,
const TVector3< T > &  point 
) [inline]

Test whether a point lies in a plane.

Parameters:
plane the plane
point the point
Returns:
bool, true or false

References BALL::isIntersecting().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TVector3< T > &  point,
const TPlane3< T > &  plane 
) [inline]

Test whether a point lies in a plane.

Parameters:
point the point
plane the plane
Returns:
bool, true or false

References BALL::GetDistance(), and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TLine3< T > &  a,
const TLine3< T > &  b 
) [inline]

Test whether two lines are intersecting.

Parameters:
a the first line
b the second line
Returns:
bool, true or false

References BALL::GetDistance(), and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TLine3< T > &  line,
const TVector3< T > &  point 
) [inline]

Test whether a line is intersecting a point.

Parameters:
line the line
point the point
Returns:
bool, true or false

References BALL::isIntersecting().

template<typename T >
BALL_INLINE bool BALL::isIntersecting ( const TVector3< T > &  point,
const TLine3< T > &  line 
) [inline]

Test whether a line is intersecting a point.

Parameters:
point the point
line the line
Returns:
bool, true or false

References BALL::GetDistance(), and BALL::Maths::isZero().

Referenced by BALL::isIntersecting().

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TPlane3< T > &  a,
const TPlane3< T > &  b 
) [inline]

Test whether two planes are orthogonal.

Parameters:
a the first plane
b the second plane
Returns:
bool, true or false

References BALL::Maths::isZero(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TPlane3< T > &  plane,
const TVector3< T > &  vector 
) [inline]

Test whether a plane and a vector3 are orthogonal.

Parameters:
plane the plane
vector the vector3
Returns:
bool, true or false

References BALL::isOrthogonal().

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TVector3< T > &  vector,
const TPlane3< T > &  plane 
) [inline]

Test whether a vector3 and a plane are orthogonal.

Parameters:
vector the vector3
plane the plane
Returns:
bool, true or false

References BALL::isCollinear(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TLine3< T > &  a,
const TLine3< T > &  b 
) [inline]

Test whether two lines are orthogonal.

Parameters:
a the first line
b the second line
Returns:
bool, true or false

References BALL::TLine3< T >::d, and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TLine3< T > &  line,
const TVector3< T > &  vector 
) [inline]

Test whether a line and a vector3 are orthogonal

Parameters:
line the line
vector the vector
Returns:
bool, true or false

References BALL::isOrthogonal().

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TVector3< T > &  vector,
const TLine3< T > &  line 
) [inline]

Test whether a vector3 and a line are orthogonal

Parameters:
vector the vector
line the line
Returns:
bool, true or false

References BALL::TLine3< T >::d, and BALL::Maths::isZero().

template<typename T >
BALL_INLINE bool BALL::isOrthogonal ( const TVector3< T > &  a,
const TVector3< T > &  b 
) [inline]

Test whether two vector3 are orthogonal

Parameters:
a the first vector3
b the second vector3
Returns:
bool, true or false

References BALL::Maths::isZero().

Referenced by BALL::isOrthogonal(), and BALL::isParallel().

template<typename T >
BALL_INLINE bool BALL::isParallel ( const TPlane3< T > &  a,
const TPlane3< T > &  b 
) [inline]

Test whether two planes are parallel.

Parameters:
a the first plane
b the second plane
Returns:
bool, true or false

References BALL::isCollinear(), and BALL::TPlane3< T >::n.

template<typename T >
BALL_INLINE bool BALL::isParallel ( const TPlane3< T > &  plane,
const TLine3< T > &  line 
) [inline]

Test whether a plane and a line are parallel.

Parameters:
plane the plane
line the line
Returns:
bool, true or false

References BALL::isParallel().

template<typename T >
BALL_INLINE bool BALL::isParallel ( const TLine3< T > &  line,
const TPlane3< T > &  plane 
) [inline]

Test whether a line and a plane are parallel.

Parameters:
line the line
plane the plane
Returns:
bool, true or false

References BALL::TLine3< T >::d, BALL::isOrthogonal(), and BALL::TPlane3< T >::n.

Referenced by BALL::isParallel().

template<typename T >
short BALL::SolveQuadraticEquation ( const T &  a,
const T &  b,
const T &  c,
T &  x1,
T &  x2 
) [inline]

Solve a quadratic equation of the form a $x^2 + b x + c = 0$.

Parameters:
a 
b 
c 
x1 the first solution
x2 the second solution
Returns:
short the number of solutions (0 - 2)

References BALL::Maths::isLess(), and BALL::Maths::isZero().

Referenced by BALL::GetIntersection().

template<typename T >
bool BALL::SolveSystem ( const T *  m,
T *  x,
const Size  dim 
) [inline]

Solve a system of linear equations. Given a system of linear equations

$ \begin{array}{ccccccccc} a_{1,1} x_1 & + & a_{1,2} x_2 & + & \ldots & + & a_{1,n} x_n & = & a_{1,(n+1)} \\ a_{2,1} x_1 & + & a_{2,2} x_2 & + & \ldots & + & a_{2,n} x_n & = & a_{2,(n+1)} \\ \vdots & & \vdots & & \ddots & & \vdots & & \vdots \\ a_{n,1} x_1 & + & a_{n,2} x_2 & + & \ldots & + & a_{n,n} x_n & = & a_{n,(n+1)} \\ \end{array} $
in matrix form, identify the solution $x = (x_1, x_2,\ldots x_N)$.
m should point to a C-style array containing the $n\times(n+1)$ matrix A.
The elements of A are row-ordered, i.e., they are ordered like this:
$ a_{1,1}, a_{1,2}, \cdot, a_{1,(n+1)}, a_{2,1}, \ldots a_{n,(n+1)} $
x points to a C-style array that will contain the solution vector x upon successful termination of the function.
If there is no solution or the system is under-determined, return false.
Parameters:
m pointer to the factors in the equations
x pointer in which the results are stored
dim the dimension of the equation system (number of variables)
Returns:
bool true if a solution is found

References BALL_MATRIX_CELL, BALL::Maths::isLess(), BALL::Maths::isNan(), BALL::Maths::isZero(), and BALL::Constants::k.

template<typename T >
BALL_INLINE bool BALL::SolveSystem2 ( const T &  a1,
const T &  b1,
const T &  c1,
const T &  a2,
const T &  b2,
const T &  c2,
T &  x1,
T &  x2 
) [inline]

Solve a system of two equations of the form $a_1 x_1 + b_1 x_2 = c_1$ and $a_2 x_1 + b_2 x_2 = c_2$.

Parameters:
a1,b1,c1,a2,b2,c2 constants of the system
x1 the first solution
x2 the second solution
Returns:
bool true if a solution is found

References BALL::Maths::isZero().

Referenced by BALL::GetIntersection().