瀑布图颜色计算

时间:2013-12-02 11:55:57

标签: java swing audio fft spectrum

我写了一个基于JPanel的类,它根据我从音频信号的FFT分析得到的数据显示瀑布图。

问题是:如何确定要使用的颜色?

我目前执行此操作的功能如下:

/**
* Returns the color for the given FFT result value.
* @param currentValue One data entry of the FFT result
* @return The color in which the pixel should be drawn
*/
public Color calcColor(float currentValue){

    float max_color_value=255+255+255;//r+g+b max value
    //scale this to our MAX_VALUE
    float scaled_max_color_val=(max_color_value/MAX_VALUE)*currentValue;
    //split into r g b parts
    int r=0;
    int g=0;
    int b=0;

    if(scaled_max_color_val < 255) {
        b=(int)Math.max(0, scaled_max_color_val);
    } else if(scaled_max_color_val > 255 && scaled_max_color_val < 255*2){
        g=(int)Math.max(0, scaled_max_color_val-255);
    } else if(scaled_max_color_val > 255*2 ){
        r=(int)Math.max(0, scaled_max_color_val-255*2);
        r=Math.min(r, 255);
    }

    return new Color(r, g, b);
} 

所以我的目标是以一种颜色取决于currentValue的方式改变这个功能。来自低 - >高的currentValue应该与黑色相对应 - &gt;绿色 - &gt;黄色 - &gt;红色。 如何在我的函数中实现它?

0 个答案:

没有答案