Search code examples
c++ccolorsvisualization

Colormap library for C++ which converts a given value into red, green and blue values


I'm looking for a colormap library which converts a given value into red, green and blue values. Similar to the colormap feature of matlab [1]. Preferrably in C++.

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


Solution

  • In think this is way too simple for a library personally i've implemented it my self their is the example in C++ (you can look up wikipedia for the math explanation):

    /* 
    * 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;
        }
    }