46 #ifndef EIGEN_ALIGNEDBOX_H
47 #define EIGEN_ALIGNEDBOX_H
65 template <
typename _Scalar,
int _AmbientDim>
110 template<
typename OtherVectorType1,
typename OtherVectorType2>
114 template<
typename Derived>
164 {
return sizes().prod(); }
217 template<
typename Derived>
221 return (
m_min.array()<=p_n.array()).all() && (p_n.array()<=
m_max.array()).
all();
226 {
return (
m_min.array()<=(b.
min)().array()).all() && ((b.
max)().array()<=
m_max.array()).
all(); }
231 {
return (
m_min.array()<=(b.
max)().array()).all() && ((b.
min)().array()<=
m_max.array()).
all(); }
235 template<
typename Derived>
276 template<
typename Derived>
286 template<
typename Derived>
298 template<
typename Derived>
311 template<
typename Derived>
325 template<
int Mode,
int Options>
338 template<
int Mode,
int Options>
355 this->
m_max = (rotated_center_2 + rotated_extent_2) /
Scalar(2);
356 this->
m_min = (rotated_center_2 - rotated_extent_2) /
Scalar(2);
363 template<
int Mode,
int Options>
376 template<
typename NewScalarType>
385 template<
typename OtherScalarType>
388 m_min = (other.
min)().template cast<Scalar>();
389 m_max = (other.
max)().template cast<Scalar>();
406 template<
typename Scalar,
int AmbientDim>
407 template<
typename Derived>
413 for (
Index k=0; k<dim(); ++k)
415 if( m_min[k] > p[k] )
417 aux = m_min[k] - p[k];
420 else if( p[k] > m_max[k] )
422 aux = p[k] - m_max[k];
429 template<
typename Scalar,
int AmbientDim>
434 for (
Index k=0; k<dim(); ++k)
436 if( m_min[k] > b.
m_max[k] )
438 aux = m_min[k] - b.
m_max[k];
441 else if( b.
m_min[k] > m_max[k] )
443 aux = b.
m_min[k] - m_max[k];
466 #define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
468 typedef AlignedBox<Type, Size> AlignedBox##SizeSuffix##TypeSuffix;
470 #define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
471 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 1, 1) \
472 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
473 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
474 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
475 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X)
481 #undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
482 #undef EIGEN_MAKE_TYPEDEFS
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix)
Definition: AlignedBox.h:470
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
Definition: ArrayCwiseUnaryOps.h:187
T random()
Definition: LinkedList.cpp:11
#define EIGEN_CONST_CONDITIONAL(cond)
Definition: Macros.h:1153
#define EIGEN_USING_STD(FUNC)
Definition: Macros.h:1185
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:976
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(Scalar, Size)
Definition: Memory.h:842
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition: StaticAssert.h:127
An axis aligned box.
Definition: AlignedBox.h:67
EIGEN_DEVICE_FUNC AlignedBox translated(const MatrixBase< Derived > &a_t) const
Definition: AlignedBox.h:287
VectorType m_min
Definition: AlignedBox.h:401
EIGEN_DEVICE_FUNC bool isEmpty() const
Definition: AlignedBox.h:131
EIGEN_DEVICE_FUNC const CwiseBinaryOp< internal::scalar_difference_op< Scalar, Scalar >, const VectorType, const VectorType > sizes() const
Definition: AlignedBox.h:159
EIGEN_DEVICE_FUNC bool contains(const MatrixBase< Derived > &p) const
Definition: AlignedBox.h:218
EIGEN_DEVICE_FUNC VectorType &() max()
Definition: AlignedBox.h:148
EIGEN_DEVICE_FUNC void setNull()
Definition: AlignedBox.h:127
EIGEN_DEVICE_FUNC AlignedBox(Index _dim)
Definition: AlignedBox.h:105
EIGEN_DEVICE_FUNC internal::cast_return_type< AlignedBox, AlignedBox< NewScalarType, AmbientDimAtCompileTime > >::type cast() const
Definition: AlignedBox.h:378
EIGEN_DEVICE_FUNC void transform(const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &transform)
Definition: AlignedBox.h:339
EIGEN_DEVICE_FUNC AlignedBox(const MatrixBase< Derived > &p)
Definition: AlignedBox.h:115
EIGEN_DEVICE_FUNC VectorType corner(CornerType corner) const
Definition: AlignedBox.h:182
EIGEN_DEVICE_FUNC VectorType &() min()
Definition: AlignedBox.h:144
_Scalar Scalar
Definition: AlignedBox.h:71
EIGEN_DEVICE_FUNC CwiseBinaryOp< internal::scalar_difference_op< Scalar, Scalar >, const VectorType, const VectorType > diagonal() const
Definition: AlignedBox.h:170
EIGEN_DEVICE_FUNC VectorType sample() const
Definition: AlignedBox.h:200
EIGEN_DEVICE_FUNC bool isNull() const
Definition: AlignedBox.h:124
ScalarTraits::NonInteger NonInteger
Definition: AlignedBox.h:75
EIGEN_DEVICE_FUNC const VectorType &() min() const
Definition: AlignedBox.h:142
EIGEN_DEVICE_FUNC const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(VectorTypeSum, RealScalar, quotient) center() const
Definition: AlignedBox.h:151
NumTraits< Scalar > ScalarTraits
Definition: AlignedBox.h:72
EIGEN_DEVICE_FUNC AlignedBox & extend(const MatrixBase< Derived > &p)
Definition: AlignedBox.h:236
EIGEN_DEVICE_FUNC AlignedBox transformed(const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &transform) const
Definition: AlignedBox.h:364
EIGEN_DEVICE_FUNC bool intersects(const AlignedBox &b) const
Definition: AlignedBox.h:230
Eigen::Index Index
Definition: AlignedBox.h:73
EIGEN_DEVICE_FUNC AlignedBox & clamp(const AlignedBox &b)
Definition: AlignedBox.h:256
EIGEN_DEVICE_FUNC AlignedBox merged(const AlignedBox &b) const
Definition: AlignedBox.h:272
EIGEN_DEVICE_FUNC void transform(const typename Transform< Scalar, AmbientDimAtCompileTime, Mode, Options >::TranslationType &translation)
Definition: AlignedBox.h:326
EIGEN_DEVICE_FUNC bool isApprox(const AlignedBox &other, const RealScalar &prec=ScalarTraits::dummy_precision()) const
Definition: AlignedBox.h:396
@ AmbientDimAtCompileTime
Definition: AlignedBox.h:70
EIGEN_DEVICE_FUNC Scalar squaredExteriorDistance(const MatrixBase< Derived > &p) const
Definition: AlignedBox.h:408
EIGEN_DEVICE_FUNC bool contains(const AlignedBox &b) const
Definition: AlignedBox.h:225
CwiseBinaryOp< internal::scalar_sum_op< Scalar >, const VectorType, const VectorType > VectorTypeSum
Definition: AlignedBox.h:77
EIGEN_DEVICE_FUNC Index dim() const
Definition: AlignedBox.h:121
EIGEN_DEVICE_FUNC ~AlignedBox()
Definition: AlignedBox.h:118
EIGEN_DEVICE_FUNC AlignedBox intersection(const AlignedBox &b) const
Definition: AlignedBox.h:266
EIGEN_DEVICE_FUNC AlignedBox & extend(const AlignedBox &b)
Definition: AlignedBox.h:246
VectorType m_max
Definition: AlignedBox.h:401
EIGEN_DEVICE_FUNC const VectorType &() max() const
Definition: AlignedBox.h:146
ScalarTraits::Real RealScalar
Definition: AlignedBox.h:74
EIGEN_DEVICE_FUNC NonInteger exteriorDistance(const AlignedBox &b) const
Definition: AlignedBox.h:319
CornerType
Definition: AlignedBox.h:81
@ TopLeftFloor
Definition: AlignedBox.h:93
@ BottomLeft
Definition: AlignedBox.h:87
@ BottomRightFloor
Definition: AlignedBox.h:92
@ Min
Definition: AlignedBox.h:83
@ BottomLeftCeil
Definition: AlignedBox.h:94
@ BottomLeftFloor
Definition: AlignedBox.h:92
@ TopLeft
Definition: AlignedBox.h:88
@ Max
Definition: AlignedBox.h:83
@ TopRightCeil
Definition: AlignedBox.h:95
@ TopRightFloor
Definition: AlignedBox.h:93
@ BottomRight
Definition: AlignedBox.h:87
@ BottomRightCeil
Definition: AlignedBox.h:94
@ TopLeftCeil
Definition: AlignedBox.h:95
@ TopRight
Definition: AlignedBox.h:88
EIGEN_DEVICE_FUNC void setEmpty()
Definition: AlignedBox.h:135
EIGEN_DEVICE_FUNC AlignedBox()
Definition: AlignedBox.h:101
Matrix< Scalar, AmbientDimAtCompileTime, 1 > VectorType
Definition: AlignedBox.h:76
EIGEN_DEVICE_FUNC Scalar volume() const
Definition: AlignedBox.h:163
EIGEN_DEVICE_FUNC AlignedBox & translate(const MatrixBase< Derived > &a_t)
Definition: AlignedBox.h:277
EIGEN_DEVICE_FUNC AlignedBox(const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &other)
Definition: AlignedBox.h:386
EIGEN_DEVICE_FUNC AlignedBox(const OtherVectorType1 &_min, const OtherVectorType2 &_max)
Definition: AlignedBox.h:111
EIGEN_DEVICE_FUNC NonInteger exteriorDistance(const MatrixBase< Derived > &p) const
Definition: AlignedBox.h:312
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:84
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:50
EIGEN_DEVICE_FUNC Derived & setConstant(Index size, const Scalar &val)
Definition: CwiseNullaryOp.h:361
Represents a translation transformation.
Definition: Translation.h:31
@ Affine
Definition: Constants.h:460
@ AffineCompact
Definition: Constants.h:462
@ Isometry
Definition: Constants.h:457
Namespace containing all symbols from the Eigen library.
Definition: LDLT.h:16
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
static const Eigen::internal::all_t all
Definition: IndexedViewHelper.h:171
const int Dynamic
Definition: Constants.h:22
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
@ IsInteger
Definition: NumTraits.h:155
T Real
Definition: NumTraits.h:164
Definition: XprHelper.h:510