Библиотека цветовых карт для C ++, которая преобразует данное значение в значения красного, зеленого и синего - PullRequest
2 голосов
/ 21 августа 2011

Я ищу библиотеку цветовых карт, которая преобразует данное значение в красное, зеленое и синее значения. Аналогично функции цветовой карты в Matlab [1]. Предпочтительно на С ++.

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

1 Ответ

4 голосов
/ 21 августа 2011

Я думаю, что это слишком просто для библиотеки, лично я ее реализовал, это мой пример на 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...