Question

Je tiens à attirer certaines données dans une texture:de nombreux éléments dans une rangée.Ils ne sont pas créés dans l'ordre, et ils peuvent tous être de tailles différentes (pensez à un segment de mémoire).Chaque élément de données est un petit rectangle et je veux être capable de les distinguer à part, j'aimerais que chacun d'entre eux d'avoir une couleur unique.

Maintenant, je pourrais simplement utiliser rand() pour générer les valeurs RVB et espère qu'ils sont tous différents, mais je crois que je ne vais pas obtenir une bonne répartition dans l'espace RVB.Est-il mieux que cela?E. g.ce qui est une bonne façon de vélo par le biais de différentes couleurs avant de (presque) à répétition?

Les couleurs n'ont pas à correspondre avec toutes les données dans les articles.Je veux juste être en mesure de regarder beaucoup de valeurs et de voir qu'ils sont différents car ils sont adjacents.

J'ai pu comprendre quelque chose, mais je pense que c'est une question intéressante.:)

Était-ce utile?

La solution

En utilisant le modèle de couleur RVB n'est pas un bon moyen pour obtenir un bon mélange de couleurs.Il est préférable d'utiliser un autre modèle de couleurs pour générer votre couleur, et ensuite de les convertir à partir de ce modèle de couleur RVB.

Je vous suggère de l' HSV ou HSL modèle de couleur au lieu de cela, en particulier, vous voulez varier les La teinte.

Si vous voulez X différentes valeurs de couleur, varient de 0 à 360 avec une taille de pas de 360 divisé par X.

Autres conseils

En général RVB n'est pas un grand espace de couleur pour faire ce genre de choses parce qu'il est non linéaire perceptive, pour commencer. Cela signifie que des distances égales déplacées entre les triplets RVB ne semble pas aussi différente de nos yeux.

Je serais probablement travailler dans le noreferrer"> ( voir aussi ) l'espace, ou HSL espace , et juste générer un espacement uniforme de teinte. Ces espaces ont été conçus pour être à peu près linéaire perceptive.

Quel est votre espace d'échantillon ... le nombre d'éléments que nous parlons.

Vous pouvez construire un tableau de RVB Triples de

for(int r = 0; r < 255; r = r+16)
   for(int g = 0; g < 255; g = g+16)
      for(int b = 0; b < 255; b = b+16)
           // take r, g, b and add it to a list

Alors randomiser votre liste et itérer à travers elle. que je vous donnerais 16 ^ 3 (4096) couleurs différentes avant une couleur répétée.

Google "delta e 2000 cie"; la formule de différence de couleur est utile pour déterminer la distance apparente (visuelle) entre 2 couleurs. . (Sur un moniteur;. Il y a une formule différente de pigments) Il opère sur les couleurs dans l'espace de laboratoire (les accessoires pour Simon), mais applique un calcul de la différence de perception

Nous avons constaté qu'un certain nombre d'environ 1,5 était suffisant pour assurer visuellement distincts couleurs (vous pouvez dire la différence si elles sont l'un près de l'autre), mais si vous voulez identifiable couleurs (vous pouvez trouver toutes les couleurs dans une légende), vous aurez besoin de tomber cela.

En ce qui concerne la création d'un ensemble de couleurs ... Je commencerais probablement à un coin de l'espace de laboratoire, et de marcher à l'aide d'un pas qui donne assez grandes différences visuelles (note: ce n'est pas la taille linéaire, donc étape probablement être adaptatif) puis la liste randomiser.

Ceci est très similaire au problème quatre couleurs relatives aux cartes de coloration, cela pourrait donner des solutions intéressantes pour vous:

théorème couleur Quatre

Si vous avez juste besoin d'un ensemble de couleurs perceptuels distinctes (et non un algorithme pour les générer) J'ai créé un outil gratuit sur mon site qui fait exactement cela:
http://phrogz.net/css/distinct-colors.html

Au lieu d'utiliser l'espacement même en RVB ou dans l'espace HSV (qui ne sont pas réparties uniformément par rapport à la perception humaine) l'outil vous permet de générer une grille de valeurs dans l'espace HSV et utilise ensuite le CMC (I: c) norme pour la distance de couleur pour jeter des couleurs qui sont perceptuel trop proches autre. (Le curseur « seuil » sur le deuxième onglet vous permet de contrôler la façon dont les couleurs visuellement distinctes doivent être, en vous montrant les résultats en temps réel.)

En fin de compte, vous pouvez trier votre liste de couleurs générées par différents critères, puis uniformément «shuffle cette liste de sorte que vous êtes assuré d'avoir des valeurs visuellement distinctes adjacentes les unes aux autres dans la liste. (I recommande une valeur 'Interleave' d'environ 5).

A ce jour l'outil fonctionne bien avec Chrome, Safari et (via une cale) Firefox; IE9 ne supporte pas les curseurs d'entrée de gamme HTML5, l'interface utilisateur qui utilise de façon extensive pour l'exploration interactive.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top