我現在有這個那2種顏色之間褪色:C++淡入顏色? (Arduino的)
for(int i=0;i<nLEDs;i++){
a = (255/100) * (incomingByte * sensitivity);
r = (r * 7 + a + 7)/8;
g = (g * 7 + (255 - a) + 7)/8;
b = 0;
FTLEDColour col = { r , g , b };
led.setLED(i, col);
}
但我現在試圖讓用戶輸入自己的顏色:
// > Colour fade, Start colour
int colFade1Red = 0;
int colFade1Green = 255;
int colFade1Blue = 0;
// > Colour fade, End colour
int colFade2Red = 255;
int colFade2Green = 0;
int colFade2Blue = 0;
int fadeAm = 7; // Fade speed
與衰落代碼:
void ColourFade(){
for(int i=0;i<nLEDs;i++){
r = ctest(colFade1Red, colFade2Red, r);
g = ctest(colFade1Green, colFade2Green, g);
b = ctest(colFade1Blue, colFade2Blue, b);
FTLEDColour col = { r , g , b };
led.setLED(i, col);
}
}
int ctest(int col1, int col2, int cur){
int temp = col1 - col2;
if(temp < 0) { temp = -temp; }
int alp = (temp/100) * (incomingByte * sensitivity);
if(col1 < col2){
return (cur * fadeAm + (col2 - alp) + fadeAm)/(fadeAm +1);
} else {
return (cur * fadeAm + alp + fadeAm)/(fadeAm +1);
}
}
但這在與第二次用戶顏色變淡成粉紅色。我如何正確地淡化顏色?
另外「incomingByte」是0和100之間的值,並且所述代碼是在更新循環。顏色之間
方面'溫度/ 100'無線可能會返回0或1(這是一個整數除法)。你所有的'ctest'都很混亂,如果你指定了輸入,輸出和所需的轉換,那將會更容易。 –