// Values double[] getK(List <double[]> list) { double[] K = { }; if (list.Count == 2) { // Polynomial Curve: dY = dX * ( K0 * (X0 + X1) + K1 ) K = new double[] { 0, (list[1][1] - list[0][1]) / (list[1][0] - list[0][0]) }; curve = Ktype.Polynomial; return(K); } double[] dY = { list[list.Count - 2][1] - list[list.Count - 3][1], list[list.Count - 1][1] - list[list.Count - 2][1] }; double[] dX = { list[list.Count - 2][0] - list[list.Count - 3][0], list[list.Count - 1][0] - list[list.Count - 2][0] }; double curvature = (dY[1] / dX[1] - dY[0] / dX[0]) / ((dX[0] + dX[1]) / 2); if (curvature > 0) { // Exponential Curve: Y1/Y0 = EXP(dX * K); K = new double[] { Math.Log(list.Last()[1] / list[list.Count - 2][1]) / dX[1] }; curve = Ktype.Exponential; } else if (curvature < 0 && dY[1] >= 0) { // Logarithmic Curve: dY = K * LN(X1/X0); K = new double[] { dY[1] / Math.Log(list.Last()[0] / list[list.Count - 2][0]) }; curve = Ktype.Logarithmic; } else { // Polynomial Curve: dY = dX * ( K0 * (X0 + X1) + K1 ) K = new double[] { curvature / 2, dY[1] / dX[1] - (list.Last()[0] + list[list.Count - 2][0]) * curvature / 2 }; curve = Ktype.Polynomial; } return(K); }
// Values double[] getK(List<double[]> list) { double[] K = { }; if (list.Count == 2) { // Polynomial Curve: dY = dX * ( K0 * (X0 + X1) + K1 ) K = new double[] { 0, (list[1][1] - list[0][1]) / (list[1][0] - list[0][0]) }; curve = Ktype.Polynomial; return K; } double[] dY = { list[list.Count - 2][1] - list[list.Count - 3][1], list[list.Count - 1][1] - list[list.Count - 2][1] }; double[] dX = { list[list.Count - 2][0] - list[list.Count - 3][0], list[list.Count - 1][0] - list[list.Count - 2][0] }; double curvature = (dY[1] / dX[1] - dY[0] / dX[0]) / ((dX[0] + dX[1]) / 2); if (curvature > 0) { // Exponential Curve: Y1/Y0 = EXP(dX * K); K = new double[] { Math.Log(list.Last()[1] / list[list.Count - 2][1]) / dX[1] }; curve = Ktype.Exponential; } else if (curvature < 0 && dY[1] >= 0) { // Logarithmic Curve: dY = K * LN(X1/X0); K = new double[] { dY[1] / Math.Log(list.Last()[0] / list[list.Count - 2][0]) }; curve = Ktype.Logarithmic; } else { // Polynomial Curve: dY = dX * ( K0 * (X0 + X1) + K1 ) K = new double[] { curvature / 2, dY[1] / dX[1] - (list.Last()[0] + list[list.Count - 2][0]) * curvature / 2 }; curve = Ktype.Polynomial; } return K; }