算法随机产生一个美学
我正在寻找一种简单的算法来生成大量随机的,美观的颜色。 所以没有疯狂的霓虹色彩,让人想起粪便的颜色等。
我已经找到了解决这个问题的解决方案,但他们依赖于替代调色板而不是RGB。 我宁愿只使用直线RGB而不是来回映射。 这些其他解决方案最多也只能生成32个或更多令人愉悦的随机颜色。
任何想法都会很棒。
您可以将随机颜色的RGB值与常量颜色的RGB值进行平均:
(在Java中的例子)
public Color generateRandomColor(Color mix) {
Random random = new Random();
int red = random.nextInt(256);
int green = random.nextInt(256);
int blue = random.nextInt(256);
// mix the color
if (mix != null) {
red = (red + mix.getRed()) / 2;
green = (green + mix.getGreen()) / 2;
blue = (blue + mix.getBlue()) / 2;
}
Color color = new Color(red, green, blue);
return color;
}
将随机颜色与白色(255,255,255)混合,通过增加明度来创建中性粉色,同时保持原始颜色的色调。 这些随机生成的粉彩通常会很好地结合在一起,特别是在大量情况下。
以下是使用上述方法生成的一些柔和色彩:
您也可以将随机颜色与常量柔和色相混合,从而生成一组有色中性色。 例如,使用浅蓝色可以创建如下所示的颜色:
进一步说,您可以将启发式算法添加到您的生成器中,并考虑到补色或阴影水平,但这一切都取决于您想用随机颜色实现的印象。
一些额外的资源:
我会使用一个色轮,并给予一个随机的位置,你可以添加金色角度(137.5度)
http://en.wikipedia.org/wiki/Golden_angle
以便每次不重叠时获得不同的颜色。
调整色轮的亮度可以得到不同的亮/暗色组合。
我发现这篇博客文章非常好地解释了问题以及使用黄金比例的解决方案。
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
更新:我刚刚发现了另一种方法:
它被称为RYB(红,黄,蓝)方法,并在本文中进行了描述:
http://threekings.tk/mirror/ryb_TR.pdf
作为“Paint Inspired Color Compositing”。
该算法生成颜色,并选择每种新颜色以最大化其与先前选择的颜色的欧氏距离。
在这里你可以找到一个很好的实现在JavaScript中:
http://afriggeri.github.com/RYB/
更新2:
Sciences Po Medialb刚刚发布了一个名为“我想要色相”的工具,为数据科学家生成调色板。 使用不同的颜色空间并使用k-means聚类或力矢量(排斥图)生成调色板这些方法的结果非常好,它们在其网页中显示了理论和实现。
http://tools.medialab.sciences-po.fr/iwanthue/index.php
在javascript中:
function pastelColors(){
var r = (Math.round(Math.random()* 127) + 127).toString(16);
var g = (Math.round(Math.random()* 127) + 127).toString(16);
var b = (Math.round(Math.random()* 127) + 127).toString(16);
return '#' + r + g + b;
}
看到这里的想法:http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
链接地址: http://www.djcxy.com/p/39925.html上一篇: Algorithm to randomly generate an aesthetically
下一篇: How does