next up previous contents index
suivant: Inversion de la table monter: Inversion de table de précédent: L'itérateur   Table des matières   Index

Recherche orientée

Le code de la méthode est le suivant :
void colormap::oriented_search(iterator & ite,
                              unsigned char * input,
                              int& min_dist,
                              int & index)
{
  int current_dist;
  
  for(;ite<ite.end();ite++)
    {
      current_dist=(input[0]-ite[0])*(input[0]-ite[0]);
      if(current_dist > min_dist)
        break;
      for(int i=1;i<3;i++)
        current_dist+=(input[i]-ite[i])*(input[i]-ite[i]);
      if(current_dist<min_dist)
        {
          index=ite.index();
          min_dist=current_dist;
        }
    }
}
Notez le test sur la première composante pour sortir de la boucle dès que la distance sur la première composante est supérieure à min_dist. Pour le reste on fait avancer l'itérateur jusqu'à la fin en mettant à jour à chaque étape la distance minimale et l'indice correspondant.

Brun Luc 2004-03-25