/// <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); }
private void CalculateMinPoints() { XMin = XPoints.Min(); YMin = YPoints.Min(); ZMin = ZPoints.Min(); }
private void CalculateMaxPoints() { XMax = XPoints.Max(); YMax = YPoints.Max(); ZMax = ZPoints.Max(); }