Nevím přesně, jaký máš rozsah toho Length. Ale obecně, pokud potřebuješ mapovat jeden lineárně rozmístěný rozsah na jiný, tak je to lineární funkce, tedy y = Ax + B. Jde jenom o to, správně si stanovit koeficienty A a B. Toho dosáhneš tak, že znáš dva body vstupního rozsahu (dejme tomu x1 a x2) a jim odpovídající body výstupního rozsahu (y1 a y2). Může to být třeba minimum a maximum, záleží na situaci. Pak už stačí jenom tyto body dosadit do obecné rovnice:
y = Ax + B
y1 = Ax1 + B
y2 = Ax2 + B
To je triviální soustava lineárních rovnic o dvou neznámých (neznámé jsou A a B). Tu si můžeš obecně vyřešit a vyjde to něco jako
A = (y2 - y1) / (x2 - x1)
B = y1 - Ax1
A máš vyhráno. Ještě je třeba nezapomenout na kontrolu, že x1 != x2. Pak už jakékoliv x přepočítáš na y.
KIIV: Zaokrouhlovat přes ceil nebo floor jsem zkoušel, ale to mi právě vůbec nevyřešilo problém, spíš mi to ještě zhoršilo (všude jsem měl jednu barvu jenom)
ondra: ten rozsah se mění dynamicky, jednou tam vleze třeba 10,120,210 ale i přes 255 a to s tou rovnicí nějak nevim, co bych si tam měl dosadit, když jediný co znam je délka popř. rozmezí barvy 0-255 :/