Hola JF Sebastian,
La verdad es que no termino de comprender lo que buscas.
Por empezar el espacio formado entre rojo (255,0,0) y azul (0,0,255) es amplio. Por lo que existen muchos colores posibles.
Si entedemos a esto en el espacio, tendremos tres ejes: R, G, B. Los ejes van desde el 0 al 255. Si sólo debemos desplazarnos desde el eje R al B, quiere decir que en ningún momento intervendrá el eje G. Claramente se ve que se trata de un giro de 90º. Por tanto sólo obtendremos combinaciones de distintas tonalidades de rojo y azul.
Con esto en mente a mi se me ocurre rotar el vector (x,0,z) "a" grados uniformemente distribuídos. Es decir que cuando a es cero, tendremos:
x (rojo) = 255 * cos(0) = 255
z (azul) = 255 * sen(0) = 0
Por tanto el color que se obtiene es: (x,0,z) = (255,0,0)
Cuando a = 90, tenemos:
x (rojo) = 255 * cos(90) = 0
z (azul) = 255 * sen(90) = 255
Es decir el color (0,0,255)
¿Se entiende la idea?
Bueno ahora la cuestión es como obtener ese "a"... bueno si consideramos que 90º es el 100% o 1, y que 0º es 0% o 0... entonces el grado de desplazamiento estará dado por 90/cantidad, siendo "cantidad" la cantidad de colores que deseas obtener... por ejemplo tus 20. En este caso, los 20 colores estarán espaciados 90/20º (4,5º) uno de otro.
Bueno esa es mi idea... no se si es eso lo que buscas. Si no se me entiende y/o no es lo que buscas te agradecería que lo hicieras saber.
¿Cúal es el problema de éste método? que sólo obtendrás los colores ubicados sobre el contorno que describe el vector por lo que no comprende todo el especto posible con dos colores. Por ejemplo el color (255,0,255) no estará cubierto.
Si nos pudieras explicar con mejores detalles lo que buscas te podríamos ser de ayuda.
Saludos,
|