示例#1
0
        /// <summary>
        /// Calculate dot product of two vectors
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int DotProduct(VectorNInt a, VectorNInt b)
        {
            if (a.Dimensions != b.Dimensions)
            {
                return(0);
            }

            int sum = 0;

            for (int i = 0; i < a.Dimensions; i++)
            {
                sum += a.GetDimension(i) * b.GetDimension(i);
            }
            return(sum);
        }
示例#2
0
        /// <summary>
        /// Manhattan distance between 2 vectors
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int DistanceManhattan(VectorNInt a, VectorNInt b)
        {
            if (a.Dimensions != b.Dimensions)
            {
                return(0);
            }

            int sum = 0;

            for (int i = 0; i < a.Dimensions; i++)
            {
                sum += Math.Abs(a.GetDimension(i) - b.GetDimension(i));
            }

            return(sum);
        }
示例#3
0
        /// <summary>
        /// Distance between 2 vectors
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static double Distance(VectorNInt a, VectorNInt b)
        {
            if (a.Dimensions != b.Dimensions)
            {
                return(0);
            }

            double sum = 0;

            for (int i = 0; i < a.Dimensions; i++)
            {
                sum += Math.Pow(a.GetDimension(i) - b.GetDimension(i), 2);
            }

            return(Math.Sqrt(sum));
        }
示例#4
0
        public bool Equals(VectorNInt other)
        {
            // check dimension count
            if (Dimensions != other.Dimensions)
            {
                return(false);
            }

            // check if each dimension is close
            for (int i = 0; i < Dimensions; i++)
            {
                // stop after first which differs
                if (Math.Abs(GetDimension(i) - other.GetDimension(i)) > 0.000001)
                {
                    return(false);
                }
            }

            return(true);
        }