Hyperplane< _Scalar, _AmbientDim, _Options > Class Template Reference

A hyperplane. More...

#include <Hyperplane.h>

Public Member Functions

Scalar absDistance (const VectorType &p) const
 
template<typename NewScalarType>
internal::cast_return_type< Hyperplane, Hyperplane< NewScalarType, AmbientDimAtCompileTime, Options > >::type cast () const
 
Coefficientscoeffs ()
 
const Coefficientscoeffs () const
 
Index dim () const
 
 Hyperplane ()
 
template<typename OtherScalarType, int OtherOptions>
 Hyperplane (const Hyperplane< OtherScalarType, AmbientDimAtCompileTime, OtherOptions > &other)
 
 Hyperplane (const ParametrizedLine< Scalar, AmbientDimAtCompileTime > &parametrized)
 
 Hyperplane (const VectorType &n, const VectorType &e)
 
 Hyperplane (const VectorType &n, Scalar d)
 
 Hyperplane (Index _dim)
 
VectorType intersection (const Hyperplane &other) const
 
template<int OtherOptions>
bool isApprox (const Hyperplane< Scalar, AmbientDimAtCompileTime, OtherOptions > &other, typename NumTraits< Scalar >::Real prec=NumTraits< Scalar >::dummy_precision()) const
 
NormalReturnType normal ()
 
ConstNormalReturnType normal () const
 
void normalize (void)
 
Scalar & offset ()
 
const Scalar & offset () const
 
VectorType projection (const VectorType &p) const
 
Scalar signedDistance (const VectorType &p) const
 
template<typename XprType>
Hyperplanetransform (const MatrixBase< XprType > &mat, TransformTraits traits=Affine)
 
template<int TrOptions>
Hyperplanetransform (const Transform< Scalar, AmbientDimAtCompileTime, Affine, TrOptions > &t, TransformTraits traits=Affine)
 

Static Public Member Functions

static Hyperplane Through (const VectorType &p0, const VectorType &p1)
 
static Hyperplane Through (const VectorType &p0, const VectorType &p1, const VectorType &p2)
 

Detailed Description

template<typename _Scalar, int _AmbientDim, int _Options>
class Eigen::Hyperplane< _Scalar, _AmbientDim, _Options >

A hyperplane.

This is defined in the Geometry module.

#include <Eigen/Geometry>

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.

Constructor & Destructor Documentation

◆ Hyperplane() [1/6]

template<typename _Scalar, int _AmbientDim, int _Options>
Hyperplane ( )
inlineexplicit

Default constructor without initialization

Referenced by cast(), Hyperplane(), intersection(), isApprox(), Through(), Through(), transform(), and transform().

◆ Hyperplane() [2/6]

template<typename _Scalar, int _AmbientDim, int _Options>
Hyperplane ( Index _dim)
inlineexplicit

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

◆ Hyperplane() [3/6]

template<typename _Scalar, int _AmbientDim, int _Options>
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.

References MatrixBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::dot(), normal(), and offset().

◆ Hyperplane() [4/6]

template<typename _Scalar, int _AmbientDim, int _Options>
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.

References normal(), and offset().

◆ Hyperplane() [5/6]

template<typename _Scalar, int _AmbientDim, int _Options>
Hyperplane ( const ParametrizedLine< Scalar, AmbientDimAtCompileTime > & parametrized)
inlineexplicit

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.

References MatrixBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::dot(), normal(), offset(), and MatrixBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::unitOrthogonal().

◆ Hyperplane() [6/6]

template<typename _Scalar, int _AmbientDim, int _Options>
template<typename OtherScalarType, int OtherOptions>
Hyperplane ( const Hyperplane< OtherScalarType, AmbientDimAtCompileTime, OtherOptions > & other)
inlineexplicit

Copy constructor with scalar type conversion

References cast(), coeffs(), and Hyperplane().

Member Function Documentation

◆ absDistance()

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

References signedDistance().

◆ cast()

template<typename _Scalar, int _AmbientDim, int _Options>
template<typename NewScalarType>
internal::cast_return_type< Hyperplane, Hyperplane< NewScalarType, AmbientDimAtCompileTime, Options > >::type 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.

References Hyperplane().

Referenced by Hyperplane().

◆ coeffs() [1/2]

template<typename _Scalar, int _AmbientDim, int _Options>
Coefficients & 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 $

◆ coeffs() [2/2]

template<typename _Scalar, int _AmbientDim, int _Options>
const Coefficients & 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 $

Referenced by Hyperplane(), and intersection().

◆ dim()

template<typename _Scalar, int _AmbientDim, int _Options>
Index dim ( ) const
inline
Returns
the dimension in which the plane holds

Referenced by normal(), normal(), offset(), and offset().

◆ intersection()

template<typename _Scalar, int _AmbientDim, int _Options>
VectorType intersection ( const Hyperplane< _Scalar, _AmbientDim, _Options > & other) const
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.

References coeffs(), and Hyperplane().

◆ isApprox()

template<typename _Scalar, int _AmbientDim, int _Options>
template<int OtherOptions>
bool isApprox ( const Hyperplane< Scalar, AmbientDimAtCompileTime, OtherOptions > & 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()

References Hyperplane().

◆ normal() [1/2]

template<typename _Scalar, int _AmbientDim, int _Options>
NormalReturnType 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.

References dim().

◆ normal() [2/2]

template<typename _Scalar, int _AmbientDim, int _Options>
ConstNormalReturnType normal ( ) const
inline
Returns
a constant reference to the unit normal vector of the plane, which corresponds to the linear part of the implicit equation.

References dim().

Referenced by Hyperplane(), Hyperplane(), Hyperplane(), ParametrizedLine< _Scalar, _AmbientDim, _Options >::intersectionParameter(), normalize(), ParametrizedLine< _Scalar, _AmbientDim, _Options >::ParametrizedLine(), projection(), signedDistance(), Through(), Through(), transform(), and transform().

◆ normalize()

template<typename _Scalar, int _AmbientDim, int _Options>
void normalize ( void )
inline

normalizes *this

References normal().

◆ offset() [1/2]

template<typename _Scalar, int _AmbientDim, int _Options>
Scalar & offset ( )
inline
Returns
a non-constant reference to the distance to the origin, which is also the constant part of the implicit equation

References dim().

◆ offset() [2/2]

template<typename _Scalar, int _AmbientDim, int _Options>
const Scalar & offset ( ) const
inline
Returns
the distance to the origin, which is also the "constant term" of the implicit equation
Warning
the vector normal is assumed to be normalized.

References dim().

Referenced by Hyperplane(), Hyperplane(), Hyperplane(), ParametrizedLine< _Scalar, _AmbientDim, _Options >::intersectionParameter(), ParametrizedLine< _Scalar, _AmbientDim, _Options >::ParametrizedLine(), signedDistance(), Through(), Through(), and transform().

◆ projection()

template<typename _Scalar, int _AmbientDim, int _Options>
VectorType projection ( const VectorType & p) const
inline
Returns
the projection of a point p onto the plane *this.

References normal(), and signedDistance().

◆ signedDistance()

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

References normal(), and offset().

Referenced by absDistance(), and projection().

◆ Through() [1/2]

template<typename _Scalar, int _AmbientDim, int _Options>
static Hyperplane Through ( const VectorType & p0,
const VectorType & p1 )
inlinestatic

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.

References MatrixBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::dot(), Hyperplane(), normal(), and offset().

◆ Through() [2/2]

template<typename _Scalar, int _AmbientDim, int _Options>
static Hyperplane Through ( const VectorType & p0,
const VectorType & p1,
const VectorType & p2 )
inlinestatic

Constructs a hyperplane passing through the three points. The dimension of the ambient space is required to be exactly 3.

References MatrixBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::dot(), Hyperplane(), normal(), and offset().

◆ transform() [1/2]

template<typename _Scalar, int _AmbientDim, int _Options>
template<typename XprType>
Hyperplane & 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.

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

Referenced by transform().

◆ transform() [2/2]

template<typename _Scalar, int _AmbientDim, int _Options>
template<int TrOptions>
Hyperplane & transform ( const Transform< Scalar, AmbientDimAtCompileTime, Affine, TrOptions > & 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.

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


The documentation for this class was generated from the following files: