Pregunta

Quiero sacar algunos datos en una textura:muchos de los elementos de una fila.Que no se crean en orden, y todos pueden ser de diferentes tamaños (pensar en un montón de memoria).Cada elemento de datos es un rectángulo pequeño y quiero ser capaz de diferenciarlos, así que me gustaría que cada uno de ellos tiene un color único.

Ahora yo podría simplemente utilizar la función rand() para generar los valores RGB y la esperanza que todos son diferentes, pero sospecho que no voy a conseguir una buena distribución en el espacio RGB.Hay una manera mejor que esto?E. g.lo que es una buena manera de ciclismo a través de diferentes colores antes de que (casi) repita?

Los colores no tienen que coincidir con los datos de los elementos.Sólo quiero ser capaz de mirar a muchos de los valores y ver que ellos son diferentes, como son adyacentes.

Yo podría pensar en algo, pero creo que esta es una pregunta interesante.:)

¿Fue útil?

Solución

Utilizando el modelo de color RGB, no es una buena manera de obtener una buena mezcla de colores.Es mejor usar otro modelo de color para generar su color y, a continuación, convertir de que el modelo de color RGB.

Yo sugiero que el El VHS o HSL el modelo de color en lugar de ello, en particular, se desea variar la Hue.

Si quieres X diferentes valores de color, variar de 0 a 360 con un tamaño de paso de 360 dividido por X.

Otros consejos

En RGB general, no es un gran espacio de color para hacer este tipo de cosas porque es perceptualmente no lineal, para empezar. Esto significa que la igualdad de distancias mueven entre tripletes RGB no se ven igualmente diferente a nuestros ojos.

Me gustaría probablemente trabajo en el L * C * h * ( ver también ) espacio, o HSL espacio , y acaba de generar una separación uniforme en el tono. Estos espacios han sido diseñados para ser aproximadamente perceptivamente lineal.

¿Cuál es su muestra espacio ... cuántos elementos estamos hablando.

Se puede construir una matriz de RGB 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

A continuación, asignar al azar a su lista y iterar a través de él. que le daría 16 ^ 3 (4096) diferentes colores antes de un color repetido.

Google "delta e cie 2000";el color de la diferencia fórmula es útil para determinar aparente (visual) de la distancia entre 2 colores.(En un monitor;no hay una fórmula diferente para pigmentos.) Opera sobre los colores en un espacio de Laboratorio (apoyos a simon), pero se aplica una percepción cálculo de la diferencia.

Se encontró que un número de alrededor de 1,5 era suficiente para asegurar visualmente distintas los colores (es decir,usted puede decir la diferencia si están cerca el uno del otro), pero si quieres de identificación personal colores (usted puede encontrar cualquier color en una leyenda) tendrá a topar con eso.

En cuanto a la creación de un conjunto de colores...Probablemente me inicie en algún rincón de un espacio de Laboratorio, y caminar alrededor de ella usando un tamaño de paso que da lo suficientemente grandes diferencias visuales (nota:no es lineal, por lo que el tamaño de paso probablemente tendrá que ser adaptable) y, a continuación, selección aleatoria de la lista.

Esto es muy similar al problema de cuatro colores en relación con los mapas para colorear, esto podría producir algunas soluciones interesantes para usted:

de cuatro colores teorema

Si sólo necesita un conjunto de colores perceptualmente distintas (y no un algoritmo para generar ellos) he creado una herramienta gratuita en mi sitio web que hace precisamente eso:
http://phrogz.net/css/distinct-colors.html

En lugar de simplemente utilizando espaciamiento uniforme en RGB o en el espacio HSV (que no se distribuyen de manera uniforme con respecto a la percepción humana) la herramienta le permite generar una rejilla de valores en el espacio HSV y después utiliza la CMC (I: C) estándar para la distancia de color a tirar colores que son perceptivamente muy cerca el uno otro. (El control deslizante 'umbral' en la segunda pestaña le permite controlar visualmente distinto de cómo deben ser los colores, que muestra los resultados en tiempo real.)

Al final, puede ordenar la lista de colores generados por diversos criterios, y luego uniformemente 'aleatoria' esa lista para que usted está garantizado para tener valores visualmente distintas adyacentes entre sí en la lista. (Recomiendo un valor de 'intercalado' de alrededor de 5.)

Al escribir estas líneas la herramienta funciona bien con Chrome, Safari y (a través de una cuña) de Firefox; IE9 no soporta HTML5 reguladores de entrada gama, que la interfaz de usuario utiliza ampliamente para la exploración interactiva.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top