2011-08-21 135 views

回答

3

在想这个的方式,对于库太简单了个人而言,我已经实现了它我的自我他们在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; 
    } 
} 
+0

是的,但你可能想不同的方案以供选择,如MATLAB。 – Nils

相关问题