如何在JavaScript中旋转色相

时间:2019-06-09 10:24:11

标签: javascript colors rotation

我看到here的一个spin函数从-360360,这对我来说没有意义,我认为它会从0- 360。

我想扩展互补色,三元组和四元组(它们内置在另一个库中)的概念,并生成与调色板等价的任意n-gon等值,因此是pentad,hexad,heptad等。我尝试过简单地angle * position来获得五单元组,但是5种颜色中有2种是重复的(这是因为我要从0-360开始)。

不确定如何使它正常工作。

1 个答案:

答案 0 :(得分:1)

它使您可以从-360旋转到360的原因,即使其中许多是同一件事,是因为它们都是您在概念上使用的所有值。因此,即使它们是同一事物,-20度的色相也是有意义的,+ 340度的色相也是有意义的。

var tc = tinycolor({
  r: Math.floor(Math.random() * 0xFF),
  g: Math.floor(Math.random() * 0xFF),
  b: Math.floor(Math.random() * 0xFF)
})
colors = []
var parts = 2 + Math.floor(Math.random() * 5);
for (var i = 0; i < parts; i++) {
  tc = tc.spin(360 / parts);
  colors.push('#' + tc.toHex())
}

div = document.createElement("div");
document.body.appendChild(div);
colors.forEach(function(element) {
  var d = document.createElement("button");
  d.style.cssText = 'padding:5px; font-size:22px; width:50px; height:50px; background-color:' + element;
  div.appendChild(d);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.4.1/tinycolor.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>