在Color类中实现相似方法。
然后使用:
public static ArrayList<Color> ColorList(int numOfColors) { ArrayList<Color> colorList = new ArrayList<Color>(); for (int i = 0; i < numOfColors; i++) { Color c = RandColor(); boolean similarFound = false; for(Color color : colorList){ if(color.similarTo(c)){ similarFound = true; break; } } if(!similarFound){ colorList.add(c); } } return colorList;}
要实现likeTo:
看一下RGBA颜色空间中的颜色相似度/距离,并以编程方式找到相似的颜色。一种简单的方法可以是:
((r2-r1)2 +(g2-g1)2 +(b2-b1)2)1/2
和:
boolean similarTo(Color c){ double distance = (c.r - this.r)*(c.r - this.r) + (c.g - this.g)*(c.g - this.g) + (c.b - this.b)*(c.b - this.b) if(distance > X){ return true; }else{ return false; }}
但是,您应该根据类似的想象找到X。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)