suivant: Annexe
monter: Inversion de table de
précédent: Recherche orientée
  Table des matières
  Index
La méthode finale d'inversion de couleur est simplement une
concaténation des méthodes précédemment définies :
void colormap::inverse(unsigned char* input,
unsigned char* output)
{
int start=give_entry(input[0]);
iterator to_beg(*this,start-1,backward);
iterator to_end(*this,start+1,forward);
int min_dist(0),current_dist;
int index(start);
for(int i=0;i<3;i++)
min_dist+=(input[i]-tab[3*start+i])*(input[i]-tab[3*start+i]);
oriented_search(to_beg,input,min_dist,index);
oriented_search(to_end,input,min_dist,index);
for(int i=0;i<3;i++)
output[i]=tab[3*index+i];
}
On récupère tout d'abord l'indice (dans la table) de la couleur
dont la distance suivant la première composante est la plus proche
de la couleur d'entrée. On initialise ensuite deux itérateurs nous
permettant de parcourir la table dans le sens des indices croissants
et décroissants à partir de l'indice précédemment calculé. On
initialise également, la distance minimale et l'index associé à la
valeur retournée par la fonction give_entry. Il suffit
ensuite de lancer deux oriented_search permettant d'effectuer
la recherche dans les deux directions. Le résultat est ensuite recopié
dans la variable de sortie.
Brun Luc
2004-03-25