13#ifndef INCLUDE_ASTRO_HH 
   14#define INCLUDE_ASTRO_HH 
   24#include <Eigen/Geometry> 
   32#define ASTRO_ERROR(MSG)                \ 
   34    std::ostringstream os;              \ 
   36    throw std::runtime_error(os.str()); \ 
 
   43#define ASTRO_ASSERT(COND, MSG) \ 
 
   52#define ASTRO_WARNING(MSG)         \ 
   54    std::cout << MSG << std::endl; \ 
 
   59#ifndef ASTRO_ASSERT_WARNING 
   60#define ASTRO_ASSERT_WARNING(COND, MSG) \ 
 
   88  using Matrix0 = Eigen::Matrix<Real, 0, 0>; 
 
   90  using Matrix1 = Eigen::Matrix<Real, 1, 1>; 
 
   92  using Matrix2 = Eigen::Matrix<Real, 2, 2>; 
 
   94  using Matrix3 = Eigen::Matrix<Real, 3, 3>; 
 
   96  using Matrix4 = Eigen::Matrix<Real, 4, 4>; 
 
   98  using Matrix5 = Eigen::Matrix<Real, 5, 5>; 
 
  108  using VectorX = Eigen::Vector<Real, Eigen::Dynamic>;                 
 
  109  using MatrixX = Eigen::Matrix<Real, Eigen::Dynamic, Eigen::Dynamic>; 
 
  113  using Scale      = Eigen::DiagonalMatrix<Real, 3>;           
 
  116  using Affine     = Eigen::Transform<Real, 3, Eigen::Affine>; 
 
  133  static Real const INFTY          = std::numeric_limits<Real>::infinity();           
 
  222    std::ostringstream os;
 
  224      << 
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" << std::endl
 
  225      << 
"* Copyright (c) 2025, Davide Stocco and Enrico Bertolazzi.                                      *" << std::endl
 
  226      << 
"*                                                                                               *" << std::endl
 
  227      << 
"* The Astro project is distributed under the BSD 2-Clause License.                              *" << std::endl
 
  228      << 
"*                                                                                               *" << std::endl
 
  229      << 
"* Davide Stocco                                                               Enrico Bertolazzi *" << std::endl
 
  230      << 
"* University of Trento                                                     University of Trento *" << std::endl
 
  231      << 
"* e-mail: davide.stocco@unitn.it                             e-mail: enrico.bertolazzi@unitn.it *" << std::endl
 
  232      << 
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" << std::endl;
 
 
 
The namespace for the Astro library.
Definition Astro.hh:73
static Vector3 const ZEROS_VEC3
Definition Astro.hh:154
static Vector9 const NAN_VEC9
Definition Astro.hh:200
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Definition Astro.hh:109
static Vector8 const NAN_VEC8
Definition Astro.hh:192
static Vector7 const NAN_VEC7
Definition Astro.hh:184
static Matrix2 const IDENTITY_MAT2
Definition Astro.hh:150
static Vector5 const ONES_VEC5
Definition Astro.hh:172
static Matrix2 const ONES_MAT2
Definition Astro.hh:149
Eigen::Matrix< Real, 3, 3 > Matrix3
Definition Astro.hh:94
Eigen::Quaternion< Real > Quaternion
Definition Astro.hh:112
static Real const EPSILON_HIGH
Definition Astro.hh:130
static Vector6 const ZEROS_VEC6
Definition Astro.hh:178
static Matrix1 const ZEROS_MAT1
Definition Astro.hh:139
Eigen::Matrix< Real, 0, 0 > Matrix0
Definition Astro.hh:88
static Matrix8 const NAN_MAT8
Definition Astro.hh:193
Eigen::Matrix< Real, 7, 7 > Matrix7
Definition Astro.hh:102
static Vector9 const ONES_VEC9
Definition Astro.hh:204
int Integer
Definition Astro.hh:85
static Matrix4 const ZEROS_MAT4
Definition Astro.hh:163
Eigen::Vector< Real, 5 > Vector5
Definition Astro.hh:97
static Vector1 const ZEROS_VEC1
Definition Astro.hh:138
static Matrix6 const NAN_MAT6
Definition Astro.hh:177
static Real const EPSILON
Definition Astro.hh:127
Eigen::Transform< Real, 3, Eigen::Affine > Affine
Definition Astro.hh:116
static Matrix7 const NAN_MAT7
Definition Astro.hh:185
static Vector4 const ONES_VEC4
Definition Astro.hh:164
static Real const CBRT_EPSILON
Definition Astro.hh:129
static Vector9 const ZEROS_VEC9
Definition Astro.hh:202
static Vector6 const ONES_VEC6
Definition Astro.hh:180
Eigen::AngleAxis< Real > AngleAxis
Definition Astro.hh:115
static Vector3 const NAN_VEC3
Definition Astro.hh:152
Eigen::Vector< Real, 0 > Vector0
Definition Astro.hh:87
Eigen::Matrix< Real, 3, 3 > Rotation
Definition Astro.hh:111
static Matrix7 const ZEROS_MAT7
Definition Astro.hh:187
static Matrix6 const ONES_MAT6
Definition Astro.hh:181
static Real const SQRT_EPSILON
Definition Astro.hh:128
static Matrix1 const IDENTITY_MAT1
Definition Astro.hh:142
static Vector5 const ZEROS_VEC5
Definition Astro.hh:170
static Real const EPSILON_LOW
Definition Astro.hh:132
static Matrix3 const NAN_MAT3
Definition Astro.hh:153
static Real const QUIET_NAN
Definition Astro.hh:134
static Matrix4 const ONES_MAT4
Definition Astro.hh:165
static Matrix9 const ZEROS_MAT9
Definition Astro.hh:203
static Matrix1 const ONES_MAT1
Definition Astro.hh:141
static Vector4 const ZEROS_VEC4
Definition Astro.hh:162
Eigen::Vector< Real, 6 > Vector6
Definition Astro.hh:99
static Matrix8 const ZEROS_MAT8
Definition Astro.hh:195
static Matrix3 const ZEROS_MAT3
Definition Astro.hh:155
static Matrix2 const ZEROS_MAT2
Definition Astro.hh:147
static Vector4 const NAN_VEC4
Definition Astro.hh:160
Eigen::Vector< Real, 1 > Vector1
Definition Astro.hh:89
static Matrix4 const NAN_MAT4
Definition Astro.hh:161
Eigen::Vector< Real, 4 > Vector4
Definition Astro.hh:95
Eigen::Matrix< Real, 1, 1 > Matrix1
Definition Astro.hh:90
static Matrix7 const ONES_MAT7
Definition Astro.hh:189
static Matrix5 const IDENTITY_MAT5
Definition Astro.hh:174
double Real
Definition Astro.hh:84
static Matrix9 const ONES_MAT9
Definition Astro.hh:205
Eigen::Vector< Real, 9 > Vector9
Definition Astro.hh:105
Eigen::Matrix< Real, 6, 6 > Matrix6
Definition Astro.hh:100
Eigen::Matrix< Real, 5, 5 > Matrix5
Definition Astro.hh:98
Eigen::Vector< Real, 2 > Vector2
Definition Astro.hh:91
static Matrix3 const ONES_MAT3
Definition Astro.hh:157
static Vector8 const ONES_VEC8
Definition Astro.hh:196
static Vector2 const ONES_VEC2
Definition Astro.hh:148
static Matrix5 const ONES_MAT5
Definition Astro.hh:173
static Matrix9 const IDENTITY_MAT9
Definition Astro.hh:206
static Vector8 const ZEROS_VEC8
Definition Astro.hh:194
static Vector1 const NAN_VEC1
Definition Astro.hh:136
static Vector5 const NAN_VEC5
Definition Astro.hh:168
Eigen::Vector< Real, 3 > Vector3
Definition Astro.hh:93
Eigen::Vector< Real, 8 > Vector8
Definition Astro.hh:103
static Matrix5 const NAN_MAT5
Definition Astro.hh:169
static Matrix9 const NAN_MAT9
Definition Astro.hh:201
static Vector6 const NAN_VEC6
Definition Astro.hh:176
Eigen::DiagonalMatrix< Real, 3 > Scale
Definition Astro.hh:113
static Vector7 const ONES_VEC7
Definition Astro.hh:188
static Real const INFTY
Definition Astro.hh:133
static Vector1 const ONES_VEC1
Definition Astro.hh:140
static Matrix8 const IDENTITY_MAT8
Definition Astro.hh:198
static Matrix2 const NAN_MAT2
Definition Astro.hh:145
static Matrix6 const IDENTITY_MAT6
Definition Astro.hh:182
static Matrix8 const ONES_MAT8
Definition Astro.hh:197
Eigen::Matrix< Real, 8, 8 > Matrix8
Definition Astro.hh:104
static Vector2 const NAN_VEC2
Definition Astro.hh:144
static Vector3 const ONES_VEC3
Definition Astro.hh:156
static Real const EPSILON_MEDIUM
Definition Astro.hh:131
static Matrix4 const IDENTITY_MAT4
Definition Astro.hh:166
static Matrix5 const ZEROS_MAT5
Definition Astro.hh:171
Eigen::Matrix< Real, 2, 2 > Matrix2
Definition Astro.hh:92
Eigen::Vector< Real, Eigen::Dynamic > VectorX
Definition Astro.hh:108
static Matrix3 const IDENTITY_MAT3
Definition Astro.hh:158
static Vector7 const ZEROS_VEC7
Definition Astro.hh:186
Eigen::Matrix< Real, 4, 4 > Matrix4
Definition Astro.hh:96
static Matrix6 const ZEROS_MAT6
Definition Astro.hh:179
Eigen::Matrix< Real, 9, 9 > Matrix9
Definition Astro.hh:106
Eigen::Translation< Real, 3 > Translate
Definition Astro.hh:114
static Matrix7 const IDENTITY_MAT7
Definition Astro.hh:190
static Matrix1 const NAN_MAT1
Definition Astro.hh:137
static Vector2 const ZEROS_VEC2
Definition Astro.hh:146
std::string Info()
Definition Astro.hh:221
Eigen::Vector< Real, 7 > Vector7
Definition Astro.hh:101