Ejemplo n.º 1
0
        /// <summary>
        /// Multiply vector with a number
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static VectorNInt operator *(VectorNInt a, int b)
        {
            VectorNInt output = new VectorNInt(a.Dimensions);

            for (int i = 0; i < a.Dimensions; i++)
            {
                output.SetDimension(i, a.GetDimension(i) * b);
            }
            return(output);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Subtract two vectors
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static VectorNInt operator -(VectorNInt a, VectorNInt b)
        {
            if (a.Dimensions != b.Dimensions)
            {
                return(null);
            }

            VectorNInt output = new VectorNInt(a.Dimensions);

            for (int i = 0; i < a.Dimensions; i++)
            {
                output.SetDimension(i, a.GetDimension(i) - b.GetDimension(i));
            }
            return(output);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Cross product of two vectors
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static VectorNInt operator *(VectorNInt a, VectorNInt b)
        {
            if (a.Dimensions != b.Dimensions)
            {
                return(null);
            }

            VectorNInt output = new VectorNInt(a.Dimensions);

            for (int i = 0; i < a.Dimensions; i++)
            {
                // TODO: calculate cross product
                // https://math.stackexchange.com/questions/2371022/cross-product-in-higher-dimensions/2371039
                // f**k it, not happening
            }
            return(output);
        }
Ejemplo n.º 7
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);
        }