Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public static T Clamp <T>(T v, T min, T max) where T : IVector, new()
        {
            T   nv  = new T();
            int dim = nv.Dimension;

            for (int i = 0; i < dim; i++)
            {
                nv[i] = MathX.Clamp(v[i], min[i], max[i]);
            }
            return(nv);
        }