A hyperplane. More...
#include <Hyperplane.h>
Public Types | |
enum | { AmbientDimAtCompileTime = _AmbientDim } |
typedef Matrix< Scalar, int(AmbientDimAtCompileTime)==Dynamic?Dynamic:int(AmbientDimAtCompileTime)+1, 1 > | Coefficients |
typedef Block< Coefficients, AmbientDimAtCompileTime, 1 > | NormalReturnType |
typedef NumTraits< Scalar >::Real | RealScalar |
typedef _Scalar | Scalar |
typedef Matrix< Scalar, AmbientDimAtCompileTime, 1 > | VectorType |
Public Member Functions | |
Scalar | absDistance (const VectorType &p) const |
template<typename NewScalarType > | |
ei_cast_return_type < Hyperplane, Hyperplane < NewScalarType, AmbientDimAtCompileTime > >::type | cast () const |
Coefficients & | coeffs () |
const Coefficients & | coeffs () const |
int | dim () const |
template<typename OtherScalarType > | |
Hyperplane (const Hyperplane< OtherScalarType, AmbientDimAtCompileTime > &other) | |
Hyperplane (const ParametrizedLine< Scalar, AmbientDimAtCompileTime > ¶metrized) | |
Hyperplane (const VectorType &n, Scalar d) | |
Hyperplane (const VectorType &n, const VectorType &e) | |
Hyperplane (int _dim) | |
Hyperplane () | |
VectorType | intersection (const Hyperplane &other) |
bool | isApprox (const Hyperplane &other, typename NumTraits< Scalar >::Real prec=precision< Scalar >()) const |
NormalReturnType | normal () |
const NormalReturnType | normal () const |
void | normalize (void) |
Scalar & | offset () |
const Scalar & | offset () const |
VectorType | projection (const VectorType &p) const |
Scalar | signedDistance (const VectorType &p) const |
Hyperplane & | transform (const Transform< Scalar, AmbientDimAtCompileTime > &t, TransformTraits traits=Affine) |
template<typename XprType > | |
Hyperplane & | transform (const MatrixBase< XprType > &mat, TransformTraits traits=Affine) |
~Hyperplane () | |
Static Public Member Functions | |
static Hyperplane | Through (const VectorType &p0, const VectorType &p1, const VectorType &p2) |
static Hyperplane | Through (const VectorType &p0, const VectorType &p1) |
Protected Attributes | |
Coefficients | m_coeffs |
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.
_Scalar | the scalar type, i.e., the type of the coefficients | |
_AmbientDim | the 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 where is a unit normal vector of the plane (linear part) and is the distance (offset) to the origin.
Definition at line 47 of file Hyperplane.h.
typedef Matrix<Scalar,int(AmbientDimAtCompileTime)==Dynamic ? Dynamic : int(AmbientDimAtCompileTime)+1,1> Hyperplane< _Scalar, _AmbientDim >::Coefficients |
Definition at line 57 of file Hyperplane.h.
typedef Block<Coefficients,AmbientDimAtCompileTime,1> Hyperplane< _Scalar, _AmbientDim >::NormalReturnType |
Definition at line 58 of file Hyperplane.h.
typedef NumTraits<Scalar>::Real Hyperplane< _Scalar, _AmbientDim >::RealScalar |
Definition at line 53 of file Hyperplane.h.
typedef _Scalar Hyperplane< _Scalar, _AmbientDim >::Scalar |
Definition at line 52 of file Hyperplane.h.
typedef Matrix<Scalar,AmbientDimAtCompileTime,1> Hyperplane< _Scalar, _AmbientDim >::VectorType |
Definition at line 54 of file Hyperplane.h.
anonymous enum |
Definition at line 51 of file Hyperplane.h.
Hyperplane< _Scalar, _AmbientDim >::Hyperplane | ( | ) | [inline, explicit] |
Default constructor without initialization
Definition at line 61 of file Hyperplane.h.
Hyperplane< _Scalar, _AmbientDim >::Hyperplane | ( | int | _dim | ) | [inline, explicit] |
Constructs a dynamic-size hyperplane with _dim the dimension of the ambient space
Definition at line 65 of file Hyperplane.h.
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.
Definition at line 70 of file Hyperplane.h.
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 .
Definition at line 81 of file Hyperplane.h.
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 116 of file Hyperplane.h.
Hyperplane< _Scalar, _AmbientDim >::~Hyperplane | ( | ) | [inline] |
Definition at line 122 of file Hyperplane.h.
Hyperplane< _Scalar, _AmbientDim >::Hyperplane | ( | const Hyperplane< OtherScalarType, AmbientDimAtCompileTime > & | other | ) | [inline, explicit] |
Copy constructor with scalar type conversion
Definition at line 253 of file Hyperplane.h.
Scalar Hyperplane< _Scalar, _AmbientDim >::absDistance | ( | const VectorType & | p | ) | const [inline] |
*this
and a point p. Definition at line 141 of file Hyperplane.h.
ei_cast_return_type<Hyperplane, Hyperplane<NewScalarType,AmbientDimAtCompileTime> >::type Hyperplane< _Scalar, _AmbientDim >::cast | ( | ) | const [inline] |
*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 245 of file Hyperplane.h.
Coefficients& Hyperplane< _Scalar, _AmbientDim >::coeffs | ( | ) | [inline] |
Definition at line 174 of file Hyperplane.h.
const Coefficients& Hyperplane< _Scalar, _AmbientDim >::coeffs | ( | ) | const [inline] |
Definition at line 169 of file Hyperplane.h.
int Hyperplane< _Scalar, _AmbientDim >::dim | ( | ) | const [inline] |
Definition at line 125 of file Hyperplane.h.
VectorType Hyperplane< _Scalar, _AmbientDim >::intersection | ( | const Hyperplane< _Scalar, _AmbientDim > & | other | ) | [inline] |
*this
and other are lines.Definition at line 182 of file Hyperplane.h.
bool Hyperplane< _Scalar, _AmbientDim >::isApprox | ( | const Hyperplane< _Scalar, _AmbientDim > & | other, | |
typename NumTraits< Scalar >::Real | prec = precision<Scalar>() | |||
) | const [inline] |
true
if *this
is approximately equal to other, within the precision determined by prec.Definition at line 260 of file Hyperplane.h.
NormalReturnType Hyperplane< _Scalar, _AmbientDim >::normal | ( | ) | [inline] |
Definition at line 155 of file Hyperplane.h.
const NormalReturnType Hyperplane< _Scalar, _AmbientDim >::normal | ( | ) | const [inline] |
Definition at line 150 of file Hyperplane.h.
void Hyperplane< _Scalar, _AmbientDim >::normalize | ( | void | ) | [inline] |
normalizes *this
Definition at line 128 of file Hyperplane.h.
Scalar& Hyperplane< _Scalar, _AmbientDim >::offset | ( | ) | [inline] |
Definition at line 164 of file Hyperplane.h.
const Scalar& Hyperplane< _Scalar, _AmbientDim >::offset | ( | ) | const [inline] |
Definition at line 160 of file Hyperplane.h.
VectorType Hyperplane< _Scalar, _AmbientDim >::projection | ( | const VectorType & | p | ) | const [inline] |
*this
. Definition at line 145 of file Hyperplane.h.
Scalar Hyperplane< _Scalar, _AmbientDim >::signedDistance | ( | const VectorType & | p | ) | const [inline] |
*this
and a point p. Definition at line 136 of file Hyperplane.h.
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 102 of file Hyperplane.h.
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 91 of file Hyperplane.h.
Hyperplane& Hyperplane< _Scalar, _AmbientDim >::transform | ( | const Transform< Scalar, AmbientDimAtCompileTime > & | t, | |
TransformTraits | traits = Affine | |||
) | [inline] |
Applies the transformation t to *this
and returns a reference to *this
.
t | the transformation of dimension Dim | |
traits | specifies 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 230 of file Hyperplane.h.
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
.
mat | the Dim x Dim transformation matrix | |
traits | specifies whether the matrix mat represents an Isometry or a more generic Affine transformation. The default is Affine. |
Definition at line 210 of file Hyperplane.h.
Coefficients Hyperplane< _Scalar, _AmbientDim >::m_coeffs [protected] |
Definition at line 265 of file Hyperplane.h.