Exemplo n.º 1
0
        /// <summary>
        /// Obtains the value.
        /// </summary>
        /// <param name="array3D">The array3 d.</param>
        /// <param name="heightIndex">Index of the height.</param>
        /// <param name="subscriptI">The subscript i.</param>
        /// <param name="subscriptJ">The subscript j.</param>
        /// <returns></returns>
        public static double ObtainAcumulatedValue(Hyp3DArray <double> array3D,
                                                   double heightIndex,
                                                   int subscriptI,
                                                   int subscriptJ)
        {
            if (heightIndex > array3D.OSize)
            {
                heightIndex = array3D.OSize;
            }
            if (heightIndex < 0)
            {
                heightIndex = 0;
            }
            int    superiorIndex = (int)Math.Ceiling(heightIndex) - 1;
            int    inferiorIndex = (int)Math.Floor(heightIndex) - 1;
            double fractionPart  = heightIndex % 1;

            double superiorValue = 0;
            double inferiorValue = 0;

            if (superiorIndex >= 0)
            {
                superiorValue = array3D.GetValue(subscriptI, subscriptJ, superiorIndex);
            }
            if (inferiorIndex >= 0)
            {
                inferiorValue = array3D.GetValue(subscriptI, subscriptJ, inferiorIndex);
            }

            return(inferiorValue + (superiorValue - inferiorValue) * fractionPart);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Acumulates the z values.
        /// </summary>
        /// <param name="array3D">The array3d.</param>
        /// <returns></returns>
        public static Hyp3DArray <double> AcumulateZValues(Hyp3DArray <double> array3D)
        {
            int m = array3D.MSize;
            int n = array3D.NSize;
            int o = array3D.OSize;

            var acumulatedArray = new Hyp3DArray <double>(m, n, o);

            // First row
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    double value = array3D.GetValue(i, j, 0);
                    acumulatedArray.SetValue(value, i, j, 0);
                }
            }

            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    for (int k = 1; k < o; k++)
                    {
                        double oldValue = acumulatedArray.GetValue(i, j, k - 1);
                        double value    = array3D.GetValue(i, j, k);
                        acumulatedArray.SetValue(value + oldValue, i, j, k);
                    }
                }
            }
            return(acumulatedArray);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Maximums the value z direction.
        /// </summary>
        /// <param name="array3D">The array3 d.</param>
        /// <param name="subscriptI">The subscript i.</param>
        /// <param name="subscriptJ">The subscript j.</param>
        /// <returns></returns>
        public static double MaximumValueZDirection(Hyp3DArray <double> array3D, int subscriptI, int subscriptJ)
        {
            int    o             = array3D.OSize;
            int    maxValueIndex = 0;
            double maxValue      = array3D.GetValue(subscriptI, subscriptJ, 0);

            for (int k = 0; k < o; k++)
            {
                double value = array3D.GetValue(subscriptI, subscriptJ, k);
                if (value > maxValue)
                {
                    maxValue      = value;
                    maxValueIndex = k;
                }
            }

            return(maxValueIndex);
        }