private double[] GetValue_M_Matrix_B(double[] inColor) { //M Curves double[] m = new double[InputChannelCount]; for (int i = 0; i < InputChannelCount; i++) { if (CurveM[i].Signature == TypeSignature.curve) { m[i] = ((CurveTag)CurveM[i]).GetValue(inColor[i]); } else if (CurveM[i].Signature == TypeSignature.parametricCurve) { m[i] = ((ParametricCurveTag)CurveM[i]).Curve.Function(inColor[i]); } else { return(null); } } //Matrix double[] t = MathsProcess.MatixMultiply(Matrix3x3, m); //B Curves double[] output = new double[OutputChannelCount]; for (int i = 0; i < OutputChannelCount; i++) { if (CurveB[i].Signature == TypeSignature.curve) { output[i] = ((CurveTag)CurveB[i]).GetValue(t[i]); } else if (CurveB[i].Signature == TypeSignature.parametricCurve) { output[i] = ((ParametricCurveTag)CurveB[i]).Curve.Function(t[i]); } else { return(null); } } return(output); }
public override double[] GetValue(double[] inColor) => MathsProcess.MatrixAdd(MathsProcess.MatixMultiply(MatrixIxO, inColor), MatrixOx1);