public static T Distance <T>(T dp, T sd) where T : IVector, new() { double lp = VecX.Project01(dp, sd); lp = MathX.Clamp(lp, 0.0, 1.0); return(VecX.Sub(dp, VecX.Mul(sd, lp))); }
public static Vec3 Distance(Vec3 dp, Vec3 sd) { double lp = VecX.Project01(dp, sd); lp = MathX.Clamp(lp, 0.0, 1.0); return(dp - lp * sd); }