在 PHP 中将等边范围映射到不对称范围(Hue 到 YIQ)
Map equilateral range to asymmetrical range (Hue to YIQ) in PHP
我需要一个函数来将具有 3 个大小相等的段的范围映射到具有不相等大小的段的范围。如下图table所示:
(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 范围。
如果映射是线性的,那么每个范围的公式就相当简单
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
我需要一个函数来将具有 3 个大小相等的段的范围映射到具有不相等大小的段的范围。如下图table所示:
(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 范围。
如果映射是线性的,那么每个范围的公式就相当简单
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