De toutes les couleurs :

Comme elles sont jolies et bien quelles soient toutes différentes elles sont aussi toutes plus belles les une que les autres.

Pour autant sauriez-vous les dénombrer et les nommer ?

Alors pour cela le logiciel Denis-draw permet de retrouver comment chacune d'entre elles se nomme en cherchant dans une liste par analogie successive le nom des couleurs en français de chacune d'elle.

Voici cet algorythme qui permet à partir d'une liste de couleur de référence de trouver exactement la plus proche de son espace de coordonnés de trois composants.


procedure T_Col_Named.recherche_couleur_plus_proche(find_this_color:TColorRef; var result_named_color:T_color_name);
	var i:integer;
      distance_maxi:longint;
      une_couleur:lec_color.T_color_name;

	{Parcours l'intégralité du tableau, trouve la couleur la plus proche (c) dB}
	procedure first_name_color(named_color:T_color_name);
		var distance_local:longint;
		begin
      	{la différence des composants (rouge vert bleu)}
		distance_local:=(abs(GetRvalue(find_this_color)-GetRvalue(named_color.color)))
			+(abs(GetGvalue(find_this_color)-GetGvalue(named_color.color)))
			+(abs(GetBvalue(find_this_color)-GetBvalue(named_color.color)));
      	{et telle la plus proche ?}
		if distance_local<distance_maxi then
			begin
			distance_maxi:=distance_local;
			{On prend cette couleur elle est la plus proche}
			result_named_color:=named_color;
			end;
		end; {first_name_color}
	
	
	begin {recheche_couleur_plus_proche}
  	{Un nombre très grand initialisé au plus grand}
	distance_maxi:=$ffffff;
  	{Je n'est pas encore trouvé de couleur}
	result_named_color:=nil;
  	{Je parcours la collection}
  	for i:=0 to pred(self.Count) do
  	  begin
  	  une_couleur:=self.at(i);
  	  {Est-ce que cette couleur correspond?}
  	  if une_couleur<>nil then
  	    first_name_color(une_couleur);
  	  end; {for i}
  	end; {T_Col_Named.recherche_couleur_plus_proche}