计算两种颜色之间的颜色?

Tin*_*Sky 4 java algorithm colors

我需要可视化一个数字列表,这个列表每x分钟生成一次.我目前在侧面使用带有数字的单行.这可以正常工作,但在进行实时分析时,它会变得很难看.

在想了一下之后,我想出了对数字进行颜色编码的想法,一个大的负数是红色的,一个大的正数是绿色的,一个正常的正数是浅绿色,略大于绿色和浅绿色之间的正常数字.

为了说明它,我做了一个图像:

在此输入图像描述

对我的问题.例如,我们有:

50: Color.green
0: Color.white
-50: Color.red
Run Code Online (Sandbox Code Playgroud)

如何计算代表25的颜色?

The*_*ist 6

对于严格的线性表示red <--> white <--> green,

import java.awt.Color;

/* Define the MAXIMUM saturation of RED and GREEN shades
 * Range (0-255)
 */
final int RED_MAX = 255;
final int GREEN_MAX = 255;

/* input val varies from -MAX to MAX */

/* output valColor varies from
 * -MAX = red
 *         ^
 *         |
 *         v
 *    0 = white
 *         ^
 *         |
 *         v
 *  MAX = green
 */

/* Normalised normVal varies from -255 to 255 */
normVal = (val*255)/MAX

if(val < 0) {
    /* Make it red-ish */
    valColor = new Color( RED_MAX,
                          255 + normVal, 
                          255 + normVal );
} else if (val > 0) {
    /* Make it green-ish */
    valColor = new Color( 255 - normVal), 
                          GREEN_MAX,
                          255 - normVal );
} else {
    /* Absolute White */
    valColor = new Color( 255, 255, 255 );
}
Run Code Online (Sandbox Code Playgroud)