#ifndef EIGEN_GEOMETRY_MODULE_H
#define EIGEN_GEOMETRY_MODULE_H

#include "Core"

#include "src/Core/util/DisableMSVCWarnings.h"

#include "Array"
#include <limits>

#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

namespace Eigen {

/** \defgroup Geometry_Module Geometry module
  *
  * \nonstableyet
  *
  * This module provides support for:
  *  - fixed-size homogeneous transformations
  *  - translation, scaling, 2D and 3D rotations
  *  - quaternions
  *  - \ref MatrixBase::cross() "cross product"
  *  - \ref MatrixBase::unitOrthogonal() "orthognal vector generation"
  *  - some linear components: parametrized-lines and hyperplanes
  *
  * \code
  * #include <Eigen/Geometry>
  * \endcode
  */

#include "src/Geometry/OrthoMethods.h"
#include "src/Geometry/RotationBase.h"
#include "src/Geometry/Rotation2D.h"
#include "src/Geometry/Quaternion.h"
#include "src/Geometry/AngleAxis.h"
#include "src/Geometry/EulerAngles.h"
#include "src/Geometry/Transform.h"
#include "src/Geometry/Translation.h"
#include "src/Geometry/Scaling.h"
#include "src/Geometry/Hyperplane.h"
#include "src/Geometry/ParametrizedLine.h"
#include "src/Geometry/AlignedBox.h"

} // namespace Eigen

#include "src/Core/util/EnableMSVCWarnings.h"

#endif // EIGEN_GEOMETRY_MODULE_H
