Пример #1
0
        /// <summary>
        ///     find which line segment our x fits into
        /// </summary>
        /// <param name="x"></param>
        /// <returns></returns>
        public float GetOutput(float x)
        {
            var target = 0;

            if (x < XPoints[0])
            {
                return(YPoints[0]);
            }

            if (x > XPoints.Last())
            {
                return(YPoints.Last());
            }

            for (var counter = 0; counter < XPoints.Length; counter++)
            {
                if (x < XPoints[counter])
                {
                    target = counter;
                    break;
                }

                if (Math.Abs(x - XPoints[counter]) < Tolerance)
                {
                    return(YPoints[counter]);
                }
            }

            var a         = YPoints[target] - YPoints[target - 1]; //y2-y1
            var b         = XPoints[target] - XPoints[target - 1]; //x2-x1
            var m         = a / b;                                 //slope
            var intercept = YPoints[target] - m * XPoints[target]; //b

            return(m * x + intercept);
        }
Пример #2
0
 private void CalculateMinPoints()
 {
     XMin = XPoints.Min();
     YMin = YPoints.Min();
     ZMin = ZPoints.Min();
 }
Пример #3
0
 private void CalculateMaxPoints()
 {
     XMax = XPoints.Max();
     YMax = YPoints.Max();
     ZMax = ZPoints.Max();
 }