這樣的程序,隨機輸入一些,得出的結果都是b的值。r,g兩個的值都是b的值。輸入范圍是正常的HSL數值范圍。- float hue2rgb(float p,float q,float t){
-
- if(t < 1/6)
- {
- return p + (q - p) * 6 * t;
- }
- if(1/6<=t&&t < 1/2)
- {
- return q;
- }
- if(1/2<=t&&t < 2/3) {
- return p + (q - p) * (2/3 - t) * 6;
- }
- return p;
- }
- float hslToRgb(float h, float s, float l){
- float q,p;
- float r,g,b;
- h=h/360;
- s=s/100;
- l=l/100;
- if(s == 0){
- r = g = b = l; // achromatic
- }else{
- if(l<0.5){
- q=l * (1 + s);
- }else{
- q=l + s - l * s;
- }
- if(h < 0) h=h+ 1;
- if(h > 1) h=h- 1;
-
- p = 2 * l - q;
- r = 255*hue2rgb(p, q, h+1/3);
- g =255* hue2rgb(p, q, h);
- b =255* hue2rgb(p, q, h-1/3);
- }
- return b;
- }
復制代碼
|