21 #ifndef MARS_UTILS_MATHUTILS_H 22 #define MARS_UTILS_MATHUTILS_H 26 #include <configmaps/ConfigData.h> 57 const double SQRT2PI = 2.5066282746310002;
59 double pipe(
double* x, std::vector<double>* c);
60 double polynom2(
double* x, std::vector<double>* c);
61 double polynom3(
double* x, std::vector<double>* c);
62 double polynom4(
double* x, std::vector<double>* c);
63 double polynom5(
double* x, std::vector<double>* c);
64 double gaussian(
double* x, std::vector<double>* c);
67 double polynom2D1(
double* x,
double* y, std::vector<double>* c);
68 double polynom2D2(
double* x,
double* y, std::vector<double>* c);
70 const double EPSILON = Eigen::NumTraits<double>::epsilon();
73 {
return (fabs(vec.squaredNorm() - 1.) < EPSILON*
EPSILON); }
76 {
return vec * length / vec.norm(); }
89 return Quaternion(Eigen::AngleAxis<double>(angle, axis));
102 {
return (v2.array() - v1.array()).square().sum(); }
118 template <
typename T>
123 template <
typename T>
128 template <
typename T>
Vector slerp(const Vector &from, const Vector &to, double t)
Vector lerp(const Vector &from, const Vector &to, double t)
double angleBetween(const Vector &v1, const Vector &v2, Vector *axis)
Angle between two vectors.
Vector vectorFromSpherical(double r, double theta, double phi)
double random_number(double min, double max, int digits)
double distanceSquaredBetween(const Vector &v1, const Vector &v2)
ApproximationFunction getApproximationFunctionFromString(std::string s)
sRotation quaternionTosRotation(const Quaternion &value)
bool vectorFromConfigItem(ConfigItem *item, Vector *v)
bool isNormalized(const Vector &vec)
bool quaternionFromConfigItem(ConfigItem *item, Quaternion *q)
void vectorToConfigItem(ConfigItem *item, Vector *v)
Base object of the configmaps library!
void vectorToSpherical(const Vector &v, double *r, double *theta, double *phi)
Quaternion eulerToQuaternion(const sRotation &rot)
Quaternion quaternionFromMembers(T q)
double polynom3(double *x, std::vector< double > *c)
Quaternion quaternionFromXYZWArray(T q)
double gamma_distribution(double *x, std::vector< double > *c)
double polynom2(double *x, std::vector< double > *c)
Quaternion angleAxisToQuaternion(double angle, const Vector &axis)
ApproximationFunction2D getApproximationFunction2DFromString(std::string s)
Vector getProjection(const Vector &v1, const Vector &v2)
void quaternionToConfigItem(ConfigItem *item, Quaternion *q)
double getYaw(const Quaternion &q)
Copyright 2012, DFKI GmbH Robotics Innovation Center.
Eigen::Matrix< double, 3, 1, Eigen::DontAlign > Vector
double distanceBetween(const Vector &v1, const Vector &v2)
Eigen::Quaternion< double, Eigen::DontAlign > Quaternion
double random_normal_number(double mean, double std, double low, double high)
double polynom2D1(double *x, double *y, std::vector< double > *c)
double beta_distribution(double *x, std::vector< double > *c)
double polynom5(double *x, std::vector< double > *c)
Vector scaleVectorToLength(const Vector &vec, const double &length)
double pipe(double *x, std::vector< double > *c)
double gaussian(double *x, std::vector< double > *c)
double polynom4(double *x, std::vector< double > *c)
double polynom2D2(double *x, double *y, std::vector< double > *c)
Quaternion quaternionFromWXYZArray(T q)