





Vect3D Vect3D_Add(Vect3D a, Vect3D b);
Vect3D Vect3D_Sub(Vect3D a, Vect3D b);
Vect3D Vect3D_MulScalar(Vect3D a, float scalar);
Vect3D Vect3D_Normalize(Vect3D a);
Vect3D ArbitraryRotate(Vect3D p, Vect3D axis, float theta);


float Vect3D_DotProduct(Vect3D a, Vect3D b);
float Vect3D_Length(Vect3D a);
Vect3D Vect3D_CrossProduct(Vect3D a, Vect3D b);
Vect3D Vect3D_Invert(Vect3D a);


Vect2D Vect2D_Add(Vect2D a, Vect2D b);
Vect2D Vect2D_Sub(Vect2D a, Vect2D b);
Vect2D Vect2D_MulScalar(Vect2D a, float scalar);
Vect2D Vect2D_OrthoVector(Vect2D a);