예제 #1
0
        /// <summary>
        /// Distance between two points
        /// </summary>
        public override double Dist(double[] p1, double[] p2)
        {
            GeneralUtils.CheckDimensions(p1, p2);

            var    dim = p1.Length;
            double sum = 0.0F;

            for (int i = 0; i < dim; i++)
            {
                sum += Math.Pow(Math.Abs(p1[i] - p2[i]), P);
            }

            return(Math.Pow(sum, 1.0F / P));
        }
예제 #2
0
        /// <summary>
        /// Squared distance between two points
        /// </summary>
        public double Dist2(double[] p1, double[] p2)
        {
            GeneralUtils.CheckDimensions(p1, p2);

            var    dim  = p1.Length;
            double sum2 = 0.0F;

            for (int i = 0; i < dim; i++)
            {
                sum2 += (p1[i] - p2[i]) * (p1[i] - p2[i]);
            }

            return(sum2);
        }
예제 #3
0
        /// <summary>
        /// Distance between two points
        /// </summary>
        public override double Dist(double[] p1, double[] p2)
        {
            GeneralUtils.CheckDimensions(p1, p2);

            var dim = p1.Length;
            var max = double.MinValue;

            for (int i = 0; i < dim; i++)
            {
                var abs = Math.Abs(p1[i] - p2[i]);
                if (abs > max)
                {
                    max = abs;
                }
            }

            return(max);
        }
예제 #4
0
 /// <summary>
 /// Distance between two points
 /// </summary>
 public override double Dist(double[] p1, double[] p2)
 {
     GeneralUtils.CheckDimensions(p1, p2);
     return(Math.Sqrt(Dist2(p1, p2)));
 }