25 #ifndef EIGEN_ALIGNEDBOX_H
26 #define EIGEN_ALIGNEDBOX_H
42 template <
typename _Scalar,
int _AmbientDim>
82 template<
typename OtherVectorType1,
typename OtherVectorType2>
83 inline AlignedBox(
const OtherVectorType1& _min,
const OtherVectorType2& _max) :
m_min(_min),
m_max(_max) {}
86 template<
typename Derived>
89 const typename internal::nested<Derived,2>::type
p(a_p.derived());
139 {
return sizes().prod(); }
166 if( mult & corner ) res[d] =
m_max[d];
167 else res[d] =
m_min[d];
192 template<
typename Derived>
195 typename internal::nested<Derived,2>::type
p(a_p.derived());
196 return (
m_min.array()<=
p.array()).all() && (
p.array()<=
m_max.array()).all();
201 {
return (
m_min.array()<=(b.
min)().array()).all() && ((b.
max)().array()<=
m_max.array()).all(); }
204 template<
typename Derived>
207 typename internal::nested<Derived,2>::type
p(a_p.derived());
208 m_min = m_min.cwiseMin(
p);
238 template<
typename Derived>
241 const typename internal::nested<Derived,2>::type t(a_t.derived());
251 template<
typename Derived>
264 template<
typename Derived>
280 template<
typename NewScalarType>
281 inline typename internal::cast_return_type<
AlignedBox,
284 return typename internal::cast_return_type<
AlignedBox,
289 template<
typename OtherScalarType>
292 m_min = (other.
min)().template cast<Scalar>();
293 m_max = (other.
max)().template cast<Scalar>();
310 template<
typename Scalar,
int AmbientDim>
311 template<
typename Derived>
314 const typename internal::nested<Derived,2*AmbientDim>::type
p(a_p.derived());
317 for (
Index k=0; k<dim(); ++k)
319 if( m_min[k] >
p[k] )
321 aux = m_min[k] -
p[k];
324 else if(
p[k] > m_max[k] )
326 aux =
p[k] - m_max[k];
333 template<
typename Scalar,
int AmbientDim>
338 for (
Index k=0; k<dim(); ++k)
340 if( m_min[k] > b.
m_max[k] )
342 aux = m_min[k] - b.
m_max[k];
345 else if( b.
m_min[k] > m_max[k] )
347 aux = b.
m_min[k] - m_max[k];
370 #define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
372 typedef AlignedBox<Type, Size> AlignedBox##SizeSuffix##TypeSuffix;
374 #define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
375 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 1, 1) \
376 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
377 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
378 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
379 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X)
385 #undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
386 #undef EIGEN_MAKE_TYPEDEFS
390 #endif // EIGEN_ALIGNEDBOX_H