Analytical Geometry
[Mathematics]

representation of analytical geometry functions, using the classes: TAngle, TCircle3, TLine3, TPlane3, TSphere3, TVector3. More...
Collaboration diagram for Analytical Geometry:

Functions

template<typename T >
T BALL::getDeterminant_ (const T *m, Size dim)
Subroutine to get the determinant of any matrix.
template<typename T >
T BALL::getDeterminant (const T *m, Size dim)
Get the determinant of any matrix.
template<typename T >
T BALL::getDeterminant2 (const T *m)
Get the determinant of an 2x2 matrix.
template<typename T >
T BALL::getDeterminant2 (const T &m00, const T &m01, const T &m10, const T &m11)
Get the determinant of an 2x2 matrix.
template<typename T >
T BALL::getDeterminant3 (const T *m)
Get the determinant of an 3x3 matrix.
template<typename T >
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)
Get the determinant of an 3x3 matrix.
template<typename T >
bool BALL::SolveSystem (const T *m, T *x, const Size dim)
Solve a system of linear equations.
template<typename T >
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)
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$.
template<typename T >
short BALL::SolveQuadraticEquation (const T &a, const T &b, const T &c, T &x1, T &x2)
Solve a quadratic equation of the form a $x^2 + b x + c = 0$.
template<typename T >
TVector3< T > BALL::GetPartition (const TVector3< T > &a, const TVector3< T > &b)
Get the partition of two vectors.
template<typename T >
TVector3< T > BALL::GetPartition (const TVector3< T > &a, const TVector3< T > &b, const T &r, const T &s) throw (Exception::DivisionByZero)
Get the partition of two vectors, calculated with two ratio factors.
template<typename T >
T BALL::GetDistance (const TVector3< T > &a, const TVector3< T > &b)
Get the distance between two points.
template<typename T >
T BALL::GetDistance (const TLine3< T > &line, const TVector3< T > &point) throw (Exception::DivisionByZero)
Get the distance between a line and a point.
template<typename T >
T BALL::GetDistance (const TVector3< T > &point, const TLine3< T > &line) throw (Exception::DivisionByZero)
Get the distance between a point and a line.
template<typename T >
T BALL::GetDistance (const TLine3< T > &a, const TLine3< T > &b) throw (Exception::DivisionByZero)
Get the distance between two lines.
template<typename T >
T BALL::GetDistance (const TVector3< T > &point, const TPlane3< T > &plane) throw (Exception::DivisionByZero)
Get the distance between a point and a plane.
template<typename T >
T BALL::GetDistance (const TPlane3< T > &plane, const TVector3< T > &point) throw (Exception::DivisionByZero)
Get the distance between a plane and a point.
template<typename T >
T BALL::GetDistance (const TLine3< T > &line, const TPlane3< T > &plane) throw (Exception::DivisionByZero)
Get the distance between a line and a plane.
template<typename T >
T BALL::GetDistance (const TPlane3< T > &plane, const TLine3< T > &line) throw (Exception::DivisionByZero)
Get the distance between a plane and a line.
template<typename T >
T BALL::GetDistance (const TPlane3< T > &a, const TPlane3< T > &b) throw (Exception::DivisionByZero)
Get the distance between two planes.
template<typename T >
bool BALL::GetAngle (const TVector3< T > &a, const TVector3< T > &b, TAngle< T > &intersection_angle)
Get the angle between two Vector3.
template<typename T >
bool BALL::GetAngle (const TLine3< T > &a, const TLine3< T > &b, TAngle< T > &intersection_angle)
Get the angle between two lines.
template<typename T >
bool BALL::GetAngle (const TPlane3< T > &plane, const TVector3< T > &vector, TAngle< T > &intersection_angle)
Get the angle between a plane and a Vector3.
template<typename T >
bool BALL::GetAngle (const TVector3< T > &vector, const TPlane3< T > &plane, TAngle< T > &intersection_angle)
Get the angle between a vector3 and a plane.
template<typename T >
bool BALL::GetAngle (const TPlane3< T > &plane, const TLine3< T > &line, TAngle< T > &intersection_angle)
Get the angle between a plane and a line.
template<typename T >
bool BALL::GetAngle (const TLine3< T > &line, const TPlane3< T > &plane, TAngle< T > &intersection_angle)
Get the angle between a line and a plane.
template<typename T >
bool BALL::GetAngle (const TPlane3< T > &a, const TPlane3< T > &b, TAngle< T > &intersection_angle)
Get the angle between two planes.
template<typename T >
bool BALL::GetIntersection (const TLine3< T > &a, const TLine3< T > &b, TVector3< T > &point)
Get the intersection point between two lines.
template<typename T >
bool BALL::GetIntersection (const TPlane3< T > &plane, const TLine3< T > &line, TVector3< T > &intersection_point)
Get the intersection point between a plane and a line.
template<typename T >
bool BALL::GetIntersection (const TLine3< T > &line, const TPlane3< T > &plane, TVector3< T > &intersection_point)
Get the intersection point between a line and a plane.
template<typename T >
bool BALL::GetIntersection (const TPlane3< T > &plane1, const TPlane3< T > &plane2, TLine3< T > &line)
Get the intersection line between two planes.
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &sphere, const TLine3< T > &line, TVector3< T > &intersection_point1, TVector3< T > &intersection_point2)
Get the intersection point between a sphere and a line.
template<typename T >
bool BALL::GetIntersection (const TLine3< T > &line, const TSphere3< T > &sphere, TVector3< T > &intersection_point1, TVector3< T > &intersection_point2)
Get the intersection point between a line and a sphere.
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &sphere, const TPlane3< T > &plane, TCircle3< T > &intersection_circle)
Get the intersection circle between a sphere and a plane.
template<typename T >
bool BALL::GetIntersection (const TPlane3< T > &plane, const TSphere3< T > &sphere, TCircle3< T > &intersection_circle)
Get the intersection circle between a plane and a sphere.
template<typename T >
bool BALL::GetIntersection (const TSphere3< T > &a, const TSphere3< T > &b, TCircle3< T > &intersection_circle)
Get the intersection circle between two spheres.
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)
Get the intersection points between three spheres.
template<typename T >
bool BALL::isCollinear (const TVector3< T > &a, const TVector3< T > &b)
Test whether two vector3 are collinear.
template<typename T >
bool BALL::isComplanar (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &c)
Test whether three vector3 are complanar.
template<typename T >
bool BALL::isComplanar (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &c, const TVector3< T > &d)
Test whether four vector3 are complanar.
template<typename T >
bool BALL::isOrthogonal (const TVector3< T > &a, const TVector3< T > &b)
Test whether two vector3 are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TVector3< T > &vector, const TLine3< T > &line)
Test whether a vector3 and a line are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TLine3< T > &line, const TVector3< T > &vector)
Test whether a line and a vector3 are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TLine3< T > &a, const TLine3< T > &b)
Test whether two lines are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TVector3< T > &vector, const TPlane3< T > &plane)
Test whether a vector3 and a plane are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TPlane3< T > &plane, const TVector3< T > &vector)
Test whether a plane and a vector3 are orthogonal.
template<typename T >
bool BALL::isOrthogonal (const TPlane3< T > &a, const TPlane3< T > &b)
Test whether two planes are orthogonal.
template<typename T >
bool BALL::isIntersecting (const TVector3< T > &point, const TLine3< T > &line)
Test whether a line is intersecting a point.
template<typename T >
bool BALL::isIntersecting (const TLine3< T > &line, const TVector3< T > &point)
Test whether a line is intersecting a point.
template<typename T >
bool BALL::isIntersecting (const TLine3< T > &a, const TLine3< T > &b)
Test whether two lines are intersecting.
template<typename T >
bool BALL::isIntersecting (const TVector3< T > &point, const TPlane3< T > &plane)
Test whether a point lies in a plane.
template<typename T >
bool BALL::isIntersecting (const TPlane3< T > &plane, const TVector3< T > &point)
Test whether a point lies in a plane.
template<typename T >
bool BALL::isIntersecting (const TLine3< T > &line, const TPlane3< T > &plane)
Test whether a line is intersecting a plane.
template<typename T >
bool BALL::isIntersecting (const TPlane3< T > &plane, const TLine3< T > &line)
Test whether a plane is intersecting a line.
template<typename T >
bool BALL::isIntersecting (const TPlane3< T > &a, const TPlane3< T > &b)
Test whether two planes are intersecting.
template<typename T >
bool BALL::isParallel (const TLine3< T > &line, const TPlane3< T > &plane)
Test whether a line and a plane are parallel.
template<typename T >
bool BALL::isParallel (const TPlane3< T > &plane, const TLine3< T > &line)
Test whether a plane and a line are parallel.
template<typename T >
bool BALL::isParallel (const TPlane3< T > &a, const TPlane3< T > &b)
Test whether two planes are parallel.
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)
Return the oriented angle of two vectors with a normal vector.
template<typename T >
TAngle< T > BALL::getOrientedAngle (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &normal) throw (Exception::DivisionByZero)
Return the oriented angle of two vectors with a normal vector.
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)
Return the torsion angle of four points to each other.

Detailed Description

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

Function Documentation

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

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.

Referenced by BALL::GetAngle().

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

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 >
bool BALL::GetAngle ( const TPlane3< T > & plane,
const TLine3< T > & line,
TAngle< T > & intersection_angle
)

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 >
bool BALL::GetAngle ( const TVector3< T > & vector,
const TPlane3< T > & plane,
TAngle< T > & intersection_angle
)

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 >
bool BALL::GetAngle ( const TPlane3< T > & plane,
const TVector3< T > & vector,
TAngle< T > & intersection_angle
)

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 >
bool BALL::GetAngle ( const TLine3< T > & a,
const TLine3< T > & b,
TAngle< T > & intersection_angle
)

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 >
bool BALL::GetAngle ( const TVector3< T > & a,
const TVector3< T > & b,
TAngle< T > & intersection_angle
)

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().

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

Get the determinant of any matrix.

Parameters:
m pointer to matrix
dim dimension of the matrix

References BALL::getDeterminant_().

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

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 >
T BALL::getDeterminant2 ( const T * m )

Get the determinant of an 2x2 matrix.

Parameters:
m pointer to matrix

template<typename T >
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
)

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 >
T BALL::getDeterminant3 ( const T * m )

Get the determinant of an 3x3 matrix.

Parameters:
m pointer to matrix

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

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

Referenced by BALL::getDeterminant().

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

Get the distance between two planes.

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

References BALL::Maths::abs().

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

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

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 >
T BALL::GetDistance ( const TLine3< T > & line,
const TPlane3< T > & plane
) throw (Exception::DivisionByZero)

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 >
T BALL::GetDistance ( const TPlane3< T > & plane,
const TVector3< T > & point
) throw (Exception::DivisionByZero)

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 >
T BALL::GetDistance ( const TVector3< T > & point,
const TPlane3< T > & plane
) throw (Exception::DivisionByZero)

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)

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 >
T BALL::GetDistance ( const TVector3< T > & point,
const TLine3< T > & line
) throw (Exception::DivisionByZero)

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 >
T BALL::GetDistance ( const TLine3< T > & line,
const TVector3< T > & point
) throw (Exception::DivisionByZero)

Get the distance between a line and a point.

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

template<typename T >
T BALL::GetDistance ( const TVector3< T > & a,
const TVector3< T > & b
)

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.

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
)

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::Maths::isNotEqual(), BALL::TLine3< T >::p, BALL::TSphere3< T >::p, BALL::TSphere3< T >::radius, and BALL::SolveQuadraticEquation().

Referenced by BALL::GetIntersection().

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

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 >
bool BALL::GetIntersection ( const TPlane3< T > & plane,
const TSphere3< T > & sphere,
TCircle3< T > & intersection_circle
)

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
)

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 >
bool BALL::GetIntersection ( const TLine3< T > & line,
const TSphere3< T > & sphere,
TVector3< T > & intersection_point1,
TVector3< T > & intersection_point2
)

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
)

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
)

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::TLine3< T >::d, BALL::Maths::isZero(), BALL::TPlane3< T >::n, BALL::TLine3< T >::p, and BALL::TPlane3< T >::p.

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

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 >
bool BALL::GetIntersection ( const TPlane3< T > & plane,
const TLine3< T > & line,
TVector3< T > & intersection_point
)

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
)

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().

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

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 >
TVector3<T> BALL::GetPartition ( const TVector3< T > & a,
const TVector3< T > & b
)

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)

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 >
bool BALL::isCollinear ( const TVector3< T > & a,
const TVector3< T > & b
)

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 >
bool BALL::isComplanar ( const TVector3< T > & a,
const TVector3< T > & b,
const TVector3< T > & c,
const TVector3< T > & d
)

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

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

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().

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

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().

Referenced by BALL::isIntersecting().

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

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 >
bool BALL::isIntersecting ( const TLine3< T > & line,
const TPlane3< T > & plane
)

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 >
bool BALL::isIntersecting ( const TPlane3< T > & plane,
const TVector3< T > & point
)

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 >
bool BALL::isIntersecting ( const TVector3< T > & point,
const TPlane3< T > & plane
)

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 >
bool BALL::isIntersecting ( const TLine3< T > & a,
const TLine3< T > & b
)

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 >
bool BALL::isIntersecting ( const TLine3< T > & line,
const TVector3< T > & point
)

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 >
bool BALL::isIntersecting ( const TVector3< T > & point,
const TLine3< T > & line
)

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().

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

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.

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

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

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 >
bool BALL::isOrthogonal ( const TVector3< T > & vector,
const TPlane3< T > & plane
)

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 >
bool BALL::isOrthogonal ( const TLine3< T > & a,
const TLine3< T > & b
)

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 >
bool BALL::isOrthogonal ( const TLine3< T > & line,
const TVector3< T > & vector
)

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 >
bool BALL::isOrthogonal ( const TVector3< T > & vector,
const TLine3< T > & line
)

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 >
bool BALL::isOrthogonal ( const TVector3< T > & a,
const TVector3< T > & b
)

Test whether two vector3 are orthogonal.

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

References BALL::Maths::isZero().

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

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.

Referenced by BALL::isParallel().

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

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 >
bool BALL::isParallel ( const TLine3< T > & line,
const TPlane3< T > & plane
)

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.

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

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
)

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::Maths::isLess(), BALL::Maths::isNan(), and BALL::Maths::isZero().

template<typename T >
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
)

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().


Generated on Thu Aug 6 18:30:00 2009 for BALL by doxygen 1.5.8