假设我们有以下情况:
对于x,最小值为
0x0000
相当于
0.00000
和
0xffff
相当于
1.00000
假设我有一个0.6829的值,我如何将它映射到
0x....
在javascript中?
编辑
以下内容:
我之所以需要这个是因为我想通过UDP发送一条消息到我的飞利浦色彩灯上,有关我的问题的相关文档如下:注意,我现在使用的是XY颜色空间而不是RGB:
流消息示例:
Example
{
'H', 'u', 'e', 'S', 't', 'r', 'e', 'a', 'm', //protocol
0x01, 0x00, //version 1.0
0x07, //sequence number 7
0x00, 0x00, //Reserved write 0âs
0x00, //color mode RGB
0x00, // Reserved, write 0âs
0x00, 0x00, 0x01, //light ID 1
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //red
0x00, 0x00, 0x02, //light ID 2
0x00, 0x00, 0x00, 0x00, 0xff, 0xff //blue
}
支持的颜色空间格式是rgb和xy+亮度。每个单独的颜色组件在api上都有16位的分辨率。rgb值通过色调桥转换为xy+亮度。
灯支持的x和y值的分辨率为12位,亮度为11位。这意味着api上的16位分辨率将被截断。
要在各种类型的灯(即色域)上获得最佳的颜色一致性,最好发送XY+亮度值,因为这些值与硬件无关。
对于xy,0x0000的最小值等于0.00000,0xffff等于1.00000
使用的颜色空间格式在消息头的“颜色空间”字节部分中定义。