2011-01-20 18 views
6

Cuál es la mejor manera de determinar el valor porcentual de un color entre dos valores dados. En otras palabras, ¿cuál es la mejor manera de calcular la posición% del color C?Encuentre el valor porcentual de un color entre dos colores conocidos

color A - 0x0000FF color B - 0x00CCFF color C - 0x00FFFF

Gracias!

+0

También hay esto: https://code.google.com/p/mojocolors/ podría valer la pena investigar en – Daniel

Respuesta

6

Bueno, no es tan sencillo, porque depende de cómo decidas cuantizar el color.

Puede hacerlo a través de HSB, que es la forma más correcta en mi opinión (aunque no necesariamente es un hecho) o simplemente use el valor hexadecimal.

más rápido es probable que hacerlo mediante el Hax valora

var colour:uint = 0x9900CC; 
var r:uint = colour >> 16; 
var g:uint = colour >> 8 & 0xFF; 
var b:uint = colour & 0xFF; 

.Esta le dará el valor de cada canal (c) (ABC siendo los colores)

luego hacer los cálculos para cada canal (c)

(cB - cA)/(cC - cA) 

continuación, una vez que cada uno de estos canales, puede sumarlos y dividir por 3.

hay un problema, si Color A y C son siempre los mismos para cualquier canal, debe agregar una excepción (porque cC y CA son cero y no puede dividir por cero), en ese punto también necesita para decidir cómo manejar esa diferencia.

+0

Gracias Daniel, esto funcionó a la perfección. – Andrei

+1

Definitivamente también lo probaría usando HSL, HSL o uno de los otros sistemas de color cilíndricos. Dependiendo de su aplicación, puede obtener mejores resultados (o más significativos). – mpdonadio

+0

Todavía me pregunto cuál es la forma más apropiada de tratar con un caso donde dos números son iguales y el número intermedio es diferente, matemáticamente la diferencia es infinito. Esto sería lo mismo incluso cuando se trata de HSV (HSB, HSL) – Daniel

Cuestiones relacionadas