2016-09-13 22 views
0

我需要一个函数来将具有3个相同大小的片段的范围映射到具有不等大小的片段的范围。如下表所示:在PHP中等边范围到非对称范围(色调到YIQ)

 (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) 

例如,值H = 100处于第三范围,

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

真棒,我肯定过度思考它。 –