如何从x,y坐标到唯一的RGB值?

我正在尝试为屏幕上的每个x,y坐标生成一个唯一的RGB值(我在JS中执行此操作)。


每个 RGB 值至少显示一次并不重要,但重要的是,每个显示的 RGB 值都是唯一的(并非所有颜色都需要显示,但不能有重复的颜色)。


我看到很多人建议使用HSL / HSV来确保使用所有颜色,但是由于这在我的情况下不是必需的,我想知道是否有更简单的方法。


我想出的方法如下:


var x = event.pageX/window.screen.width;

var y = event.pageY/window.screen.height;

var z = 1-x-y;


var r = parseInt(x*255);

var g = parseInt(y*255);

var b = parseInt(z*255);

我将x和y坐标转换为0到1之间的值,从这两个坐标中得到z,然后乘以255,从0-1到1-255之间的值。


虽然这是功能性的,但在x〜0.5和y〜0.5周围有重复的颜色,并且它错过了RGB色谱的相当大的一部分。


有谁知道一个更好的方法来做到这一点,同时仍然保持相对简单?


猛跑小猪
浏览 288回答 1
1回答

慕田峪4524236

假设 x 和 y 适合 12 位,则得到 24 位,正好是三个 8 位颜色的正确数字。因此,这将为屏幕的每个像素生成唯一的颜色,最高可达4096x4096。function xy_to_rgb(x,y) {&nbsp; var t = x&0xFFF | (y<<12)&0xFFF;&nbsp; return {&nbsp; &nbsp; r: t&0xFF,&nbsp; &nbsp; g: (t>>8)&0xFF,&nbsp; &nbsp; b: (t>>16)&0xFF&nbsp; };}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript