2013-02-24 41 views
0

我正在研究將LED的顏色更改爲用戶輸入的RGB值顏色的項目。顏色代碼值轉換爲2位數字

程序工作現在就改變每種顏色亮度的方式是通過提供一個數字0 - 1所以0完全在1完全關閉0.50爲50%亮度等

似乎有種向後提供0,但這只是代碼的寫法。我的問題是如何將我轉換價值0 - 2550 - 99我已經通過將3位數由2.58做數學這給了我正確的號碼,如果是1上和0爲過,但由於其向後如何獲得與此相反的結果?

這是剩下的嗎?因此,例如240/2.58 = 93其餘的是7所以是我會使用的數字?不幸的是,數學從來不是我的強項。我知道這個問題並不涉及某種語言,但我打算用C來標記它,因爲這就是它要寫入的內容。如果有人能夠提供一個使用C來獲得數字的其餘部分的例子,那將是很棒的。我知道模運算符,但我不認爲這對我的情況起作用,但我可能是錯的。

+0

'1 - color/2.58',難道不是嗎? – 2013-02-24 17:49:11

回答

2
double mapNumbers(double x, long xMin, long xMax, long yMin, long yMax) 
{ 
    return ((double)(x - xMin) * (yMax - yMin))/((double)(xMax - xMin)) + yMin; 
} 

使用上述功能: - :

所以

可以映射x這是0-255之間,並從0-99得到相應數量INFACT任何範圍的數字和任何其他數字範圍之間: mapNumbers(10/*assuming this is x*/, 0, 255, 0, 99);

1

好了,從0轉換 - 1範圍爲0 - 255範圍內,僅僅通過255多個要負做到這一點,只是減去杉st value from 1.

result = (1 - x) * 255;