Function for developing shade wheels

This is something I've pseudo-solved sometimes and also have never ever fairly located a remedy for.

The trouble is ahead up with a means to create N colors, that are as distinct as feasible where N is a parameter.

2019-05-06 23:55:33
Source Share
Answers: 3

Isn't it additionally a variable which order you set up the colors?

Like if you make use of Dillie - Os suggestion you require to blend the colors as high as feasible. 0 64 128 256 is from one to the next. yet 0 256 64 128 in a wheel would certainly be extra "apart"

Does this make good sense?

2019-05-09 08:35:29

My first idea on this is "just how to create N vectors in a room that make best use of range from each various other."

You can see that the RGB (or any kind of various other range you make use of that creates a basis in color space) are simply vectors. Have a look at Random Point Picking. As soon as you have a set of vectors that are made best use of apart, you can conserve them in a hash table or something for later on, and also simply execute arbitrary turnings on them to get all the colors you want that are maximally in addition to each various other!

Thinking of this trouble extra, it would certainly be far better to map the colors in a straight fashion, perhaps (0,0,0) → (255,255,255) lexicographically, and afterwards disperse them equally.

I actually do not recognize just how well this will certainly function, yet it needs to given that, allow us claim:

n = 10

we understand we have 16777216 colors (256 ^ 3).

We can make use of Buckles Algorithm 515 to locate the lexicographically indexed color.xx _ img_0. You'll possibly need to modify the algorithm to stay clear of overflow and also possibly add some small rate renovations.

2019-05-09 08:08:26

I've read someplace the human eye can not compare much less than 4 values apart. so This is something to remember. The adhering to algorithm does not make up for this.

I'm not exactly sure this is specifically what you desire, yet this is one means to arbitrarily create non - duplicating shade values :

(beware, irregular pseudo - code in advance)

//colors entered as 0-255 [R, G, B]
colors = []; //holds final colors to be used
rand = new Random();

//assumes n is less than 16,777,216
randomGen(int n){
   while (len(colors) < n){
      //generate a random number between 0,255 for each color
      newRed =;
      newGreen =;
      newBlue =;
      temp = [newRed, newGreen, newBlue];
      //only adds new colors to the array
      if temp not in colors {

One means you can maximize this for far better presence would certainly be to contrast the range in between each new shade and also all the colors in the array :

for item in color{
   itemSq = (item[0]^2 + item[1]^2 + item[2]^2])^(.5);
   tempSq = (temp[0]^2 + temp[1]^2 + temp[2]^2])^(.5);
   dist = itemSq - tempSq;
   dist = abs(dist);
//NUMBER can be your chosen distance apart.
if dist < NUMBER and temp not in colors {

But this strategy would dramatically reduce your algorithm.

An additional means would certainly be to junk the randomness and also methodically experience every 4 values and also add a shade to an array in the above instance.

2019-05-08 19:51:14