Matrix (Matrix simulation, Matrix correction) { // We will calculate the error between the color and the color // viewed by a color blind user and "spread" this error onto the healthy cones. // The correction matrix perform this last step and have been chosen arbitrarily. Matrix matrix = simulation.multiply(RGB_LMS); if (correction == null) correction = CORRECTION; return LMS_RGB.multiply(matrix.plus(correction.multiply(RGB_LMS.minus(matrix)))); }