令人愉悦的调色板随机颜色生成

Mik*_*ike 1 javascript java random colors generator

使用 javascript,我创建了一个 1000px x 1000px 的画布,在“播放”时会用随机大小、随机颜色的矩形填充自身。有趣,但结果很花哨。为了进一步完善它,我希望它锁定某种可能由其第一次迭代确定的调色板,然后在整个游戏中保持宽松的调色板。然后我想让它做出“偶然的”奇怪的选择,但前提是矩形很小,即很小的强调色。但我可以稍后自己弄清楚。我在这里发现了一个获得高票数的生成器,很有趣,但作者是用 Java 编写的。不幸的是,我仍然是 javascript 的菜鸟(!)有人可以告诉我如何翻译它吗?欢迎提出替代建议。如果我能弄清楚应该在哪里发布它,我很乐意分享我的脚本。毫无疑问,会有很多关于改进我的代码的建议......这是我指的生成器: 随机生成美观调色板的算法 提前非常感谢!

tac*_*lux 5

我喜欢第二个答案中文章中的那个功能。

在 JS 中,使用 s = 0.5 和 v = 0.95:

function randomColor(){
  var golden_ratio_conjugate = 0.618033988749895,
      h = (Math.random() + golden_ratio_conjugate) % 1 *360,
      rgb = hsvToRgb(h, 50, 95);
  return "rgb("+rgb[0]+","+rgb[1]+","+rgb[2]+")";
}

/**
 * Converts an HSV color value to RGB. Conversion formula
 * adapted from http://en.wikipedia.org/wiki/HSL_and_HSV.
 * Assumes h is contained in the set [0, 360] and
 * s and l are contained in the set [0, 100] and
 * returns r, g, and b in the set [0, 255].
 *
 * @param   Number  h       The hue
 * @param   Number  s       The saturation
 * @param   Number  v       The value
 * @return  Array           The RGB representation
 */
function hsvToRgb(h, s, v){
  var chroma = s * v / 10000,
      min = v / 100 - chroma,
      hdash = h / 60,
      x = chroma * (1 - Math.abs(hdash % 2 - 1)),
      r = 0, g = 0, b = 0;

  switch(true){
    case hdash < 1:
      r = chroma;
      g = x;
      break;
    case hdash < 2:
      r = x;
      g = chroma;
      break;
    case hdash < 3:
      g = chroma;
      b = x;
      break;
    case hdash < 4:
      g = x;
      b = chroma;
      break;
    case hdash < 5:
      r = x;
      b = chroma;
      break;
    case hdash <= 6:
      r = chroma;
      b = x;
      break;
  }

  r += min;
  g += min;
  b += min;

  return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
Run Code Online (Sandbox Code Playgroud)