public static Vector3d Refract(Vector3d i, Vector3d n, float eta)
        {
            REAL ni = Dot(n, i);
            REAL k  = 1.0f - eta * eta * (1.0f - ni * ni);

            return((k >= 0) ? eta * i - (eta * ni + DMath.SafeSqrt(k)) * n : Zero);
        }
 public static REAL Distance(Vector3d v0, Vector3d v1)
 {
     return(DMath.SafeSqrt(SqrDistance(v0, v1)));
 }