Main MRPT website > C++ reference
MRPT logo
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes

Hyperplane< _Scalar, _AmbientDim > Class Template Reference


Detailed Description

template<typename _Scalar, int _AmbientDim>
class Hyperplane< _Scalar, _AmbientDim >

A hyperplane

A hyperplane is an affine subspace of dimension n-1 in a space of dimension n. For example, a hyperplane in a plane is a line; a hyperplane in 3-space is a plane.

Parameters:
_Scalarthe scalar type, i.e., the type of the coefficients
_AmbientDimthe dimension of the ambient space, can be a compile time value or Dynamic. Notice that the dimension of the hyperplane is _AmbientDim-1.

This class represents an hyperplane as the zero set of the implicit equation $ n \cdot x + d = 0 $ where $ n $ is a unit normal vector of the plane (linear part) and $ d $ is the distance (offset) to the origin.

Definition at line 47 of file Hyperplane.h.

#include <src/Geometry/Hyperplane.h>

List of all members.

Public Types

enum  { AmbientDimAtCompileTime = _AmbientDim }
typedef _Scalar Scalar
typedef NumTraits< Scalar >::Real RealScalar
typedef DenseIndex Index
typedef Matrix< Scalar,
AmbientDimAtCompileTime, 1 > 
VectorType
typedef Matrix< Scalar, Index(AmbientDimAtCompileTime)==Dynamic?Dynamic:Index(AmbientDimAtCompileTime)+1, 1 > Coefficients
typedef Block< Coefficients,
AmbientDimAtCompileTime, 1 > 
NormalReturnType
typedef const Block< const
Coefficients,
AmbientDimAtCompileTime, 1 > 
ConstNormalReturnType

Public Member Functions

 Hyperplane ()
 Default constructor without initialization.
 Hyperplane (Index _dim)
 Constructs a dynamic-size hyperplane with _dim the dimension of the ambient space.
 Hyperplane (const VectorType &n, const VectorType &e)
 Construct a plane from its normal n and a point e onto the plane.
 Hyperplane (const VectorType &n, Scalar d)
 Constructs a plane from its normal n and distance to the origin d such that the algebraic equation of the plane is $ n \cdot x + d = 0 $.
 Hyperplane (const ParametrizedLine< Scalar, AmbientDimAtCompileTime > &parametrized)
 Constructs a hyperplane passing through the parametrized line parametrized.
 ~Hyperplane ()
Index dim () const
void normalize (void)
 normalizes *this
Scalar signedDistance (const VectorType &p) const
Scalar absDistance (const VectorType &p) const
VectorType projection (const VectorType &p) const
ConstNormalReturnType normal () const
NormalReturnType normal ()
const Scalaroffset () const
Scalaroffset ()
const Coefficientscoeffs () const
Coefficientscoeffs ()
VectorType intersection (const Hyperplane &other)
template<typename XprType >
Hyperplanetransform (const MatrixBase< XprType > &mat, TransformTraits traits=Affine)
 Applies the transformation matrix mat to *this and returns a reference to *this.
Hyperplanetransform (const Transform< Scalar, AmbientDimAtCompileTime, Affine > &t, TransformTraits traits=Affine)
 Applies the transformation t to *this and returns a reference to *this.
template<typename NewScalarType >
internal::cast_return_type
< Hyperplane, Hyperplane
< NewScalarType,
AmbientDimAtCompileTime >
>::type 
cast () const
template<typename OtherScalarType >
 Hyperplane (const Hyperplane< OtherScalarType, AmbientDimAtCompileTime > &other)
 Copy constructor with scalar type conversion.
bool isApprox (const Hyperplane &other, typename NumTraits< Scalar >::Real prec=NumTraits< Scalar >::dummy_precision()) const

Static Public Member Functions

static Hyperplane Through (const VectorType &p0, const VectorType &p1)
 Constructs a hyperplane passing through the two points.
static Hyperplane Through (const VectorType &p0, const VectorType &p1, const VectorType &p2)
 Constructs a hyperplane passing through the three points.

Protected Attributes

Coefficients m_coeffs

Member Typedef Documentation

template<typename _Scalar, int _AmbientDim>
typedef Matrix<Scalar,Index(AmbientDimAtCompileTime)==Dynamic ? Dynamic : Index(AmbientDimAtCompileTime)+1,1> Hyperplane< _Scalar, _AmbientDim >::Coefficients

Definition at line 58 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef const Block<const Coefficients,AmbientDimAtCompileTime,1> Hyperplane< _Scalar, _AmbientDim >::ConstNormalReturnType

Definition at line 60 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef DenseIndex Hyperplane< _Scalar, _AmbientDim >::Index

Definition at line 54 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef Block<Coefficients,AmbientDimAtCompileTime,1> Hyperplane< _Scalar, _AmbientDim >::NormalReturnType

Definition at line 59 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef NumTraits<Scalar>::Real Hyperplane< _Scalar, _AmbientDim >::RealScalar

Definition at line 53 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef _Scalar Hyperplane< _Scalar, _AmbientDim >::Scalar

Definition at line 52 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
typedef Matrix<Scalar,AmbientDimAtCompileTime,1> Hyperplane< _Scalar, _AmbientDim >::VectorType

Definition at line 55 of file Hyperplane.h.


Member Enumeration Documentation

template<typename _Scalar, int _AmbientDim>
anonymous enum
Enumerator:
AmbientDimAtCompileTime 

Definition at line 51 of file Hyperplane.h.


Constructor & Destructor Documentation

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( ) [inline, explicit]

Default constructor without initialization.

Definition at line 63 of file Hyperplane.h.

Referenced by Hyperplane< _Scalar, _AmbientDim >::cast().

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( Index  _dim) [inline, explicit]

Constructs a dynamic-size hyperplane with _dim the dimension of the ambient space.

Definition at line 67 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( const VectorType n,
const VectorType e 
) [inline]

Construct a plane from its normal n and a point e onto the plane.

Warning:
the vector normal is assumed to be normalized.

Definition at line 72 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::normal(), and Hyperplane< _Scalar, _AmbientDim >::offset().

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( const VectorType n,
Scalar  d 
) [inline]

Constructs a plane from its normal n and distance to the origin d such that the algebraic equation of the plane is $ n \cdot x + d = 0 $.

Warning:
the vector normal is assumed to be normalized.

Definition at line 83 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::normal(), and Hyperplane< _Scalar, _AmbientDim >::offset().

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( const ParametrizedLine< Scalar, AmbientDimAtCompileTime > &  parametrized) [inline, explicit]

Constructs a hyperplane passing through the parametrized line parametrized.

If the dimension of the ambient space is greater than 2, then there isn't uniqueness, so an arbitrary choice is made.

Definition at line 118 of file Hyperplane.h.

References ParametrizedLine< _Scalar, _AmbientDim >::direction(), Hyperplane< _Scalar, _AmbientDim >::normal(), Hyperplane< _Scalar, _AmbientDim >::offset(), and ParametrizedLine< _Scalar, _AmbientDim >::origin().

template<typename _Scalar, int _AmbientDim>
Hyperplane< _Scalar, _AmbientDim >::~Hyperplane ( ) [inline]

Definition at line 124 of file Hyperplane.h.

template<typename _Scalar, int _AmbientDim>
template<typename OtherScalarType >
Hyperplane< _Scalar, _AmbientDim >::Hyperplane ( const Hyperplane< OtherScalarType, AmbientDimAtCompileTime > &  other) [inline, explicit]

Copy constructor with scalar type conversion.

Definition at line 255 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::coeffs(), and Hyperplane< _Scalar, _AmbientDim >::m_coeffs.


Member Function Documentation

template<typename _Scalar, int _AmbientDim>
Scalar Hyperplane< _Scalar, _AmbientDim >::absDistance ( const VectorType p) const [inline]
Returns:
the absolute distance between the plane *this and a point p.
See also:
signedDistance()

Definition at line 143 of file Hyperplane.h.

References abs(), and Hyperplane< _Scalar, _AmbientDim >::signedDistance().

template<typename _Scalar, int _AmbientDim>
template<typename NewScalarType >
internal::cast_return_type<Hyperplane, Hyperplane<NewScalarType,AmbientDimAtCompileTime> >::type Hyperplane< _Scalar, _AmbientDim >::cast ( ) const [inline]
Returns:
*this with scalar type casted to NewScalarType

Note that if NewScalarType is equal to the current scalar type of *this then this function smartly returns a const reference to *this.

Definition at line 247 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::Hyperplane().

template<typename _Scalar, int _AmbientDim>
const Coefficients& Hyperplane< _Scalar, _AmbientDim >::coeffs ( ) const [inline]
Returns:
a constant reference to the coefficients c_i of the plane equation: $ c_0*x_0 + ... + c_{d-1}*x_{d-1} + c_d = 0 $

Definition at line 171 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::m_coeffs.

Referenced by Hyperplane< _Scalar, _AmbientDim >::Hyperplane(), and Hyperplane< _Scalar, _AmbientDim >::intersection().

template<typename _Scalar, int _AmbientDim>
Coefficients& Hyperplane< _Scalar, _AmbientDim >::coeffs ( ) [inline]
Returns:
a non-constant reference to the coefficients c_i of the plane equation: $ c_0*x_0 + ... + c_{d-1}*x_{d-1} + c_d = 0 $

Definition at line 176 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::m_coeffs.

template<typename _Scalar, int _AmbientDim>
Index Hyperplane< _Scalar, _AmbientDim >::dim ( ) const [inline]
template<typename _Scalar, int _AmbientDim>
VectorType Hyperplane< _Scalar, _AmbientDim >::intersection ( const Hyperplane< _Scalar, _AmbientDim > &  other) [inline]
Returns:
the intersection of *this with other.
Warning:
The ambient space must be a plane, i.e. have dimension 2, so that *this and other are lines.
Note:
If other is approximately parallel to *this, this method will return any point on *this.

Definition at line 184 of file Hyperplane.h.

References abs(), PlainObjectBase< Derived >::coeff(), Hyperplane< _Scalar, _AmbientDim >::coeffs(), det(), EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE, and internal::isMuchSmallerThan().

template<typename _Scalar, int _AmbientDim>
bool Hyperplane< _Scalar, _AmbientDim >::isApprox ( const Hyperplane< _Scalar, _AmbientDim > &  other,
typename NumTraits< Scalar >::Real  prec = NumTraits<Scalar>::dummy_precision() 
) const [inline]
Returns:
true if *this is approximately equal to other, within the precision determined by prec.
See also:
MatrixBase::isApprox()

Definition at line 262 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::m_coeffs.

template<typename _Scalar, int _AmbientDim>
NormalReturnType Hyperplane< _Scalar, _AmbientDim >::normal ( ) [inline]
Returns:
a non-constant reference to the unit normal vector of the plane, which corresponds to the linear part of the implicit equation.

Definition at line 157 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::dim(), and Hyperplane< _Scalar, _AmbientDim >::m_coeffs.

template<typename _Scalar, int _AmbientDim>
ConstNormalReturnType Hyperplane< _Scalar, _AmbientDim >::normal ( ) const [inline]
template<typename _Scalar, int _AmbientDim>
void Hyperplane< _Scalar, _AmbientDim >::normalize ( void  ) [inline]
template<typename _Scalar, int _AmbientDim>
Scalar& Hyperplane< _Scalar, _AmbientDim >::offset ( ) [inline]
Returns:
a non-constant reference to the distance to the origin, which is also the constant part of the implicit equation

Definition at line 166 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::dim(), and Hyperplane< _Scalar, _AmbientDim >::m_coeffs.

template<typename _Scalar, int _AmbientDim>
const Scalar& Hyperplane< _Scalar, _AmbientDim >::offset ( ) const [inline]
template<typename _Scalar, int _AmbientDim>
VectorType Hyperplane< _Scalar, _AmbientDim >::projection ( const VectorType p) const [inline]
Returns:
the projection of a point p onto the plane *this.

Definition at line 147 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::normal(), and Hyperplane< _Scalar, _AmbientDim >::signedDistance().

template<typename _Scalar, int _AmbientDim>
Scalar Hyperplane< _Scalar, _AmbientDim >::signedDistance ( const VectorType p) const [inline]
Returns:
the signed distance between the plane *this and a point p.
See also:
absDistance()

Definition at line 138 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::normal(), and Hyperplane< _Scalar, _AmbientDim >::offset().

Referenced by Hyperplane< _Scalar, _AmbientDim >::absDistance(), and Hyperplane< _Scalar, _AmbientDim >::projection().

template<typename _Scalar, int _AmbientDim>
static Hyperplane Hyperplane< _Scalar, _AmbientDim >::Through ( const VectorType p0,
const VectorType p1,
const VectorType p2 
) [inline, static]

Constructs a hyperplane passing through the three points.

The dimension of the ambient space is required to be exactly 3.

Definition at line 104 of file Hyperplane.h.

References EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE, and Hyperplane< _Scalar, _AmbientDim >::normal().

template<typename _Scalar, int _AmbientDim>
static Hyperplane Hyperplane< _Scalar, _AmbientDim >::Through ( const VectorType p0,
const VectorType p1 
) [inline, static]

Constructs a hyperplane passing through the two points.

If the dimension of the ambient space is greater than 2, then there isn't uniqueness, so an arbitrary choice is made.

Definition at line 93 of file Hyperplane.h.

References Hyperplane< _Scalar, _AmbientDim >::normal().

template<typename _Scalar, int _AmbientDim>
Hyperplane& Hyperplane< _Scalar, _AmbientDim >::transform ( const Transform< Scalar, AmbientDimAtCompileTime, Affine > &  t,
TransformTraits  traits = Affine 
) [inline]

Applies the transformation t to *this and returns a reference to *this.

Parameters:
tthe transformation of dimension Dim
traitsspecifies whether the transformation t represents an Isometry or a more generic Affine transformation. The default is Affine. Other kind of transformations are not supported.

Definition at line 232 of file Hyperplane.h.

References Transform< _Scalar, _Dim, _Mode >::linear(), Hyperplane< _Scalar, _AmbientDim >::normal(), Hyperplane< _Scalar, _AmbientDim >::offset(), Hyperplane< _Scalar, _AmbientDim >::transform(), and Transform< _Scalar, _Dim, _Mode >::translation().

template<typename _Scalar, int _AmbientDim>
template<typename XprType >
Hyperplane& Hyperplane< _Scalar, _AmbientDim >::transform ( const MatrixBase< XprType > &  mat,
TransformTraits  traits = Affine 
) [inline]

Applies the transformation matrix mat to *this and returns a reference to *this.

Parameters:
matthe Dim x Dim transformation matrix
traitsspecifies whether the matrix mat represents an Isometry or a more generic Affine transformation. The default is Affine.

Definition at line 212 of file Hyperplane.h.

References Affine, eigen_assert, MatrixBase< Derived >::inverse(), Isometry, and Hyperplane< _Scalar, _AmbientDim >::normal().

Referenced by Hyperplane< _Scalar, _AmbientDim >::transform().


Member Data Documentation

template<typename _Scalar, int _AmbientDim>
Coefficients Hyperplane< _Scalar, _AmbientDim >::m_coeffs [protected]



Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:16:28 UTC 2011