#ifndef _GEOMETRIC_H_
#define _GEOMETRIC_H_

#include <math.h>

//Cartesian 3D point
typedef struct{
	double x;
	double y;
	double z;
}cart_point;

double dotprod(cart_point* p1, cart_point* p2);
double modulus(cart_point* p);
double mod_crossprod(cart_point* p1, cart_point* p2);
double curvature_rad_at_point(cart_point *dC, cart_point *ddC);
double curvature_at_point(cart_point *dC, cart_point *ddC);
double sq_modulus(cart_point* p);
double cart_dist(cart_point* Pt_end, cart_point* Pt_str);
void compute_axial_vaj(cart_point* v, cart_point* a, cart_point* j,cart_point* dPt,cart_point* ddPt,cart_point* dddPt, double Vt, double At, double Jt);

#endif
