public static double Angle(Vector a, Vector b, double epsilon)
{
double q = Math.Asin(CrossProduct(a, b) / (a.Length * b.Length));
if (a.Length < epsilon || b.Length < epsilon)
throw new ZeroVectorsAngleException("Trying to find angle between zero-length vectors (epsilon = " + epsilon + ")");
else
return q;
}