Q
兩個特定值
0
A
回答
2
最簡單的解決方案可能是對每個RGB進行線性插值(因爲這可能是您的顏色所在的格式)。但它可能會導致一些奇怪的結果。如果lowest
爲亮藍色(0x0000FF),highest
爲亮黃色(0xFFFF00),則中途爲深灰色(0x808080)。
一個更好的解決方案可能是:
- 轉換兩種顏色到HSL(色調,飽和度,亮度)
- 線性插值這些組件
- 轉換結果回RGB。
請參閱this answer瞭解如何進行HSL轉換和從HSL轉換。
要你會需要像線性插值:
double low_speed = 20.0, high_speed = 40.0; // The end points.
int low_sat = 50, high_sat = 200; // The value at the end points.
double current_speed = 35;
const auto scale_factor = (high_sat-low_sat)/(high_speed-low_speed);
int result_sat = low_sat + scale_factor * (current_speed - low_speed);
兩個問題:
- 你需要小心整數四捨五入,如果速度實際上並不
double
。 - 當你來插補色調時,你需要知道它們被表示爲圓上的角度 - 所以你可以選擇是順時針插補還是逆時針插補(其中一個將通過360回到0) 。
相關問題
- 1. 要檢索只有兩個特定值
- 2. 當其他列有兩個特定值時選擇一個值
- 3. 兩個特定的字符
- 4. XSLT:兩個特定節點
- 5. R,sample()兩個特定列
- 6. 距離特定值的最近的兩個值
- 7. 從兩個不同的值中選擇數據和特定值
- 8. 加入兩個表,其中一個表具有特定的值
- 9. 一個#定義兩個值
- 10. 從兩個下拉列表中獲取特定數組的特定值
- 11. 綁定兩個屬性值
- 12. 綁定到兩個值
- 13. JavaScript函數在兩個特定值之間反轉
- 14. 在特定的列上總結兩個具有0值的列
- 15. 找到包含兩個特定值的行的編號?
- 16. 比較兩個文本文件的特定列值 - C#
- 17. 比較基於特定標準的兩個dict_values的值
- 18. vb.net - 比較兩個文本文件和檢索特定值
- 19. jQuery兩個<options>具有特定值的切換順序
- 20. RxJava - 兩個可觀察人士透露,僅在特定的值
- 21. R - 繪圖中兩個特定值之間的劃線R
- 22. 在Kibana中扣除兩個值爲特定的時間戳
- 23. 在兩個表格中獲得特定值的最佳方法
- 24. 在兩個鏈接列表中總結特定值的問題
- 25. Newbie Python - 當兩個特定值出現時聲明爲真
- 26. 搜索兩個表以獲得特定的匹配值
- 27. Python詞典中的兩個字典,增加特定鍵值
- 28. 將特定值上的兩個哈希合併
- 29. 只打印滿足兩個條件的特定xml值
- 30. MYSQL從兩個表中選擇具有特定條件的值
試試[線性插值(https://en.wikipedia.org/wiki/Linear_interpolation)的所有如果您想更準確的3 RGB值 –
@KaiIskratsch:提高所有RGB值的2.2動力,插入*那些*,然後將它們提升到1/2.2的冪。 – immibis
我的評論只是作爲一個非常簡單的解決方案,但從來沒有打算成爲一個完美的解決方案 –