2016-09-13 7 views
0

Мне нужна функция для отображения диапазона с 3 сегментами по размеру в диапазоне с сегментами неравных размеров. Как показано в таблице ниже:Карта равностороннего диапазона до асимметричного диапазона (от Hue до YIQ) в PHP

 (Red is all one range) 
/--------------------------------\ 
| Color | Hue Range | YIQ Range | 
|=======|===========|============| 
| Red | 0 - 59 | 0 - 149 | 
| Red | 300 - 359 | 851 - 1000 | 
| Green | 60 - 179 | 150 - 736 | 
| Blue | 180 - 299 | 737 - 850 | 
\--------------------------------/ 

Общая цель - преобразовать оттенок в диапазон YIQ.

ответ

1

Если отображение является линейным, то формула для каждого диапазона достаточно прост

Determine what range given value H belongs to 
Get HueMIn, HueMax, YMin, YMax for this range 
Y = YMin + (H - HueMin) * (YMax - Ymin)/(HueMax - HueMin) 

, например, значение Н = 100 находится в третьем диапазоне,

Y = 150 + (100 - 60) * (736 - 150)/(179 - 60) = 347 
+0

Удивительный, я был определенно передумав это. –