Beispiel #1
0
        /// <summary>
        /// Returns min Y for values between X an X + offset
        /// </summary>
        /// <param name="x">X Coordinate</param>
        /// <param name="offset"></param>
        /// <returns></returns>
        private decimal GetMinY(decimal x, decimal offset)
        {
            List<Coordinates> extendedCoordinatesList = new List<Coordinates>();
            Coordinates[] tempArray = new Coordinates[CoordinateList.Count];
            CoordinateList.CopyTo(tempArray);
            extendedCoordinatesList = tempArray.ToList();

            Coordinates previousCoordinate = CoordinateList.First();
            for (int i = CoordinateList.Count - 1; i > 0; i--)
            {
                if (CoordinateList[i].X < previousCoordinate.X)
                {
                    extendedCoordinatesList.Insert(0, new Coordinates(CoordinateList[i].X, CoordinateList[i].Y));
                    previousCoordinate = CoordinateList.First();
                }
                else
                    break;
            }

            if (345 > x && x > 344)
            {
                tempArray = null;
            }

            List<Coordinates> outerCoordinatesList = GetOuterPoints(extendedCoordinatesList, Helpers.Methods.GetMin(x, x + offset), Helpers.Methods.GetMax(x, x + offset));
            List<Coordinates> minMaxCoordinatesList = GetMinMaxCoordinates(outerCoordinatesList, x, offset);

            return minMaxCoordinatesList.OrderBy(a => a.Y).First().Y;
        }
Beispiel #2
0
        /// <summary>
        /// Returns max Y for values between X an X + offset
        /// </summary>
        /// <param name="x">X Coordinate</param>
        /// <param name="offset"></param>
        /// <returns></returns>
        private decimal GetMaxY(decimal x, decimal offset)
        {
            Coordinates[] tempArray = new Coordinates[CoordinateList.Count];
            List<Coordinates> reversedList = new List<Coordinates>();
            CoordinateList.CopyTo(tempArray);
            reversedList = tempArray.ToList();
            reversedList.Reverse();
            reversedList.Insert(0, new Coordinates(reversedList.Last().X, reversedList.Last().Y));

            List<Coordinates> outerCoordinatesList = GetOuterPoints(reversedList, Helpers.Methods.GetMin(x, x + offset), Helpers.Methods.GetMax(x, x + offset));
            List<Coordinates> minMaxCoordinatesList = GetMinMaxCoordinates(outerCoordinatesList, x, offset);

            return minMaxCoordinatesList.OrderBy(a => a.Y).Last().Y;
        }