为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2022-08-18 09:19:15
我正在尝试为屏幕上的每个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色谱的相当大的一部分。有谁知道一个更好的方法来做到这一点,同时仍然保持相对简单?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

假设 x 和 y 适合 12 位,则得到 24 位,正好是三个 8 位颜色的正确数字。因此,这将为屏幕的每个像素生成唯一的颜色,最高可达4096x4096。


function xy_to_rgb(x,y) {

  var t = x&0xFFF | (y<<12)&0xFFF;


  return {

    r: t&0xFF,

    g: (t>>8)&0xFF,

    b: (t>>16)&0xFF

  };


}


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 287 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信