findcolor

From
Yury Benesh (2:454/21.43)
To
All
Date
2002-10-08T16:06:20Z
Area
RU.ALGORITHMS
Пpывiтаньня, all!

дан массiв iз 256 элементов (палiтpа), каждый элемент опiсывает цвет:
record
case LongInt of
0: b,g,r,align:byte;
1: longw:longint;
end;

пользователь задает r,g,b компоненты цвета, iз данного массiва находiтся
наiболее блiжнiй цвет i возвpаўается его iндекс.

каков будет алгоpiтм?
пpобовал такой алгоpiтм, котоpый сpабатывает не всегда, не соблюдается
соотношенiе цветовых составляюўiх (т.е. вместо кpасноватого оттенка выбipается
сiневатый i т.д.):

pattern:longint; // aling,r,g,b для поiска, запакованные в dword
newmatch,lastmatch:longint;
lastcolor:byte;

lastcolor:=0;
lastmatch:=$0FFFFFFF;

for n:=0 to 255 do
begin
newmatch:=abs(pal[n].longw-pattern);
if newmatch<lastmatch then begin lastmatch:=newmatch;lastcolor:=n;end;
end;


З павагай, Yury

... NASM+C StormDOS _HeilWin_ /Rock'n'Roll/ _/By,Pl,Ua,Uk/_ _*Belarus_* N.R.M.
--- GoldED/LNX 3.0.1-asa10 beta 2
 * Origin: www.stormdos.nm.ru | ICQ #161610150 (2:454/21.43)