Implement the sameTo () method in the Color class.
Then use:
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;
}
To implement a similar To:
Take a look at Color similarity / distance in the RGBA color space and to search for similar colors programmatically . A simple approach could be:
((r2 - r1) 2 + (g2 - g1) 2 + (b2 - b1) 2 ) 1/2
and
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;
}
}
However, you must find your X according to your imagination.
source
share