#ifndef __VEC3D_H__
#define __VEC3D_H__

typedef double Vec3D[3]; /* a vector for a 3D point */
//#define PI  3.1415926536
#define PI  3.1415926535897932384626433832795

void summation(Vec3D v1, Vec3D v2, Vec3D sum);
void difference(Vec3D v1, Vec3D v2, Vec3D diff);
void scale(Vec3D vec, double scalar);
void unitVector(Vec3D vec, Vec3D uvec);
void crossproduct(Vec3D a, Vec3D b, Vec3D result);
double dotproduct(Vec3D x, Vec3D y);
double angle(Vec3D X, Vec3D Y);
void copyVector(Vec3D src, Vec3D dst);
void initVector(Vec3D src, double val);
void setVector(Vec3D vec, double x, double y, double z);
double distance(Vec3D a, Vec3D b);
void normalize(Vec3D a, Vec3D c);
double torsion(Vec3D A, Vec3D B, Vec3D C, Vec3D D);
void printvector (Vec3D a);

void rotateCC(Vec3D n, Vec3D r, double theta);
void rotateX(Vec3D r, double theta);
void rotateY(Vec3D r, double theta);
void rotateZ(Vec3D r, double theta);



#endif
