@Override
    public int compareTo(LSHColor o) {
        /*
         * A distancia em L e S leva em consideracao uma escala de 0 ate 255.
		 * Assim, garantimos que havera distribuicao levando em consideracao o
		 * segundo e terceiro componentes da tripla LSH (sem a escala, como L �
		 * float, existiriam "infinitos" possiveis valores de L, o que aumenta
		 * consideravelmente a chance da ordenacao parar no primeiro if).
		 */
        if (intL() < o.intL())
            return -1;
        if (intL() > o.intL())
            return 1;

        if (intS() < o.intS())
            return -1;
        if (intS() > o.intS())
            return 1;

		/*
         * A distancia em H e calculada com base na distancia relativa entre h e
		 * a variavel estatica h0.
		 */
        if (hueDist(h) < hueDist(o.h))
            return -1;
        if (hueDist(h) > hueDist(o.h))
            return 1;
        return 0;
    }