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.
- Template Parameters
-
| 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 a 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.
|
| Scalar | absDistance (const VectorType &p) const |
| |
| template<typename NewScalarType> |
| internal::cast_return_type< Hyperplane, Hyperplane< NewScalarType, AmbientDimAtCompileTime, Options > >::type | cast () const |
| |
| Coefficients & | coeffs () |
| |
| const Coefficients & | coeffs () const |
| |
| Index | dim () const |
| |
| | Hyperplane () |
| |
| template<typename OtherScalarType, int OtherOptions> |
| | Hyperplane (const Hyperplane< OtherScalarType, AmbientDimAtCompileTime, OtherOptions > &other) |
| |
| | Hyperplane (const ParametrizedLine< Scalar, AmbientDimAtCompileTime > ¶metrized) |
| |
| | Hyperplane (const VectorType &n, const Scalar &d) |
| |
| | Hyperplane (const VectorType &n, const VectorType &e) |
| |
| | Hyperplane (Index _dim) |
| |
| VectorType | intersection (const Hyperplane &other) const |
| |
| template<int OtherOptions> |
| bool | isApprox (const Hyperplane< Scalar, AmbientDimAtCompileTime, OtherOptions > &other, const typename NumTraits< Scalar >::Real &prec=NumTraits< Scalar >::dummy_precision()) const |
| |
| template<int OtherOptions> |
| bool | isCoincident (const Hyperplane< Scalar, AmbientDimAtCompileTime, OtherOptions > &other, const 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> |
| Hyperplane & | transform (const MatrixBase< XprType > &mat, TransformTraits traits=Affine) |
| |
| template<int TrOptions> |
| Hyperplane & | transform (const Transform< Scalar, AmbientDimAtCompileTime, Affine, TrOptions > &t, TransformTraits traits=Affine) |
| |
template<typename Scalar_, int AmbientDim_, int Options_>
template<int OtherOptions>
| bool Eigen::Hyperplane< Scalar_, AmbientDim_, Options_ >::isCoincident |
( |
const Hyperplane< Scalar, AmbientDimAtCompileTime, OtherOptions > & | other, |
|
|
const typename NumTraits< Scalar >::Real & | prec = NumTraits<Scalar>::dummy_precision() ) const |
|
inline |
- Returns
true if *this and other describe approximately the same set of points, within the precision determined by prec, regardless of orientation and scale.
Scaling the equation signedDistance() evaluates by any nonzero \( \gamma \) leaves its zero set unchanged. Because dot() is conjugate-linear in the normal, that carries \( (n, d) \) to \( (\bar{\gamma} n, \gamma d) \), so coincident hyperplanes need not have coefficients of equal magnitude: for a real Scalar any nonzero real factor relates them, a sign flip - which isApprox() rejects - being the norm-preserving case, and for a complex Scalar any nonzero complex factor does.
The comparison is therefore made on the normalized equations, which \( \gamma \) no longer distinguishes beyond a unit-modulus factor: the unit normals must agree, up to that factor, within prec, and the two distances to the origin must agree the way internal::isApprox() compares scalars, that is relative to their own magnitude. Comparing the two halves separately is what keeps a distant hyperplane from relaxing the comparison of the normals; it also means that a hyperplane through the origin is not coincident with one that merely passes close to it. The result is symmetric in the two hyperplanes, and unchanged both when either equation is rescaled and when the ambient coordinates are.
Both normals must be nonzero.
- See also
- isApprox(), signedDistance(), normalize()