Fui mirando a través del código fuente Raphael.js
para averiguar cómo convirtió los valores RGB a HSB. Descubrí la función que lo hizo y yo estaba en el proceso de convertir a Python cuando me encontré con este bonito operador ternario triple anidado:Un operador ternario triple anidado algo doloroso
H = (C == 0 ? null :
V == r ? (g - b)/C :
V == g ? (b - r)/C + 2 :
(r - g)/C + 4
);
Me lanzó para un bucle porque Python no lo hace tener el mismo tipo de operador ternario que Javascript. Me pasé un tiempo buscando sobre ella y, finalmente, HASHED este código un poco más sano (usando sólo si/else) fuera de él:
if (C == 0) {
H = null;
} else {
if(V == r) {
H = (g - b)/C;
} else {
if(V == g) {
H = (b - r)/C + 2;
} else {
H = (r - g)/C + 4;
}
}
}
fue mi interpretación correcta? Solo estoy preguntando esto porque si no es correcto, me enfrento con un lote de depuración. Asi que. ¿Lo "conseguí"?
Sí, parece que tienes la lógica correcta, aparte de un par de discrepancias de capitalización –
la primera 'c' en' if (c == 0) 'debe ser una' c' mayúscula, ¿no? –
¿Eh, verdad? Siento como si hubiera tirado un dardo en un tablero de dardos con mis ciervas atadas a la espalda, con los ojos vendados, y hubiera marcado un tiro al blanco. Y sí, @NiftyDude, eso es correcto. Gracias por la captura! –