public static final Color fromDouble(double v) { // inf = 255 255 0 yellow // 1 = 0 255 0 green // 0 = 0 0 0 black // -1 = 255 0 0 red // -inf = 255 0 255 magenta // nan = 0 255 255 cyan if (v == Double.MIN_VALUE || Double.isNaN(v)) return (Color.MAGENTA); else if (Double.isInfinite(v)) return (Color.CYAN); else if (v > 1.0) return (ColorMap.colorGreenToYellow[(int) (255.0 * Math.tanh((v - 1.0) / 10.0))]); else if (v > 0.0) return (ColorMap.colorBlackToGreen[(int) (255.0 * v)]); else if (v > -1.0) return (ColorMap.colorRedToBlack[(int) (255.0 * (v + 1.0))]); else return (ColorMap.colorRedToMagenta[(int) (255.0 * Math.tanh((-v - 1.0) / 10.0))]); }