c++ - 用于 C++ 的颜色图库,可将给定值转换为红色、绿色和蓝色值

标签 c++ c colors visualization

我正在寻找一个颜色图库,它将给定值转换为红色、绿色和蓝色值。类似于matlab的colormap功能[1]。最好使用 C++。

[1] http://www.mathworks.com/help/techdoc/ref/colormap.html

最佳答案

我个人认为这对于库来说太简单了,我自己实现了它,他们是 C 语言的示例(您可以查找维基百科以获取数学解释):

    /** 
     * Computes the color gradiant
     * color: the output vector 
     * x: the gradiant (beetween 0 and 360)
     * min and max: variation of the RGB channels (Move3D 0 -> 1)
     */
    void GroundColorMix(double* color, double x, double min, double max)
{
   /*
    * Red = 0
    * Green = 1
    * Blue = 2
    */
    double posSlope = (max-min)/60;
    double negSlope = (min-max)/60;

    if( x < 60 )
    {
        color[0] = max;
        color[1] = posSlope*x+min;
        color[2] = min;
        return;
    }
    else if ( x < 120 )
    {
        color[0] = negSlope*x+2*max+min;
        color[1] = max;
        color[2] = min;
        return;
    }
    else if ( x < 180  )
    {
        color[0] = min;
        color[1] = max;
        color[2] = posSlope*x-2*max+min;
        return;
    }
    else if ( x < 240  )
    {
        color[0] = min;
        color[1] = negSlope*x+4*max+min;
        color[2] = max;
        return;
    }
    else if ( x < 300  )
    {
        color[0] = posSlope*x-4*max+min;
        color[1] = min;
        color[2] = max;
        return;
    }
    else
    {
        color[0] = max;
        color[1] = min;
        color[2] = negSlope*x+6*max;
        return;
    }
}

关于c++ - 用于 C++ 的颜色图库,可将给定值转换为红色、绿色和蓝色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139825/

相关文章:

Javascript:更改html文档中每个 "r"的颜色

c++ - 如何使用 Armadillo 或特征库获得稀疏矩阵的特征分解?

c++ - 我可以制作一个从其基础继承的模板特化吗?

c - 如何在 64 位进程(Windows)上正确保存和恢复线程上下文?

c - 我如何判断一个函数是否进入内核

c - 如何保证C中的锁定顺序

c++ sstream,每行读取不同数量的变量

c++ - 在dll项目之间使用extern方法?

colors - 哪些浏览器支持颜色的 Alpha channel ?

c# - 双线性插值配色方案