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))); }