Daca vrei sa cauti un pixel de culoare C , pe suprafata discului de centru (x,y) si raza R , eu cred ca cel mai potrivit ar fi sa procedezi astfel :

Notatii :(x,y) = punctul sau pixelul de coordonate x si y ;
[x] = partea intreaga a numarului real x ;Procedeu :Se ia de exemplu un diametru AB paralel cu axa ordonatelor , deoarece punctele de pe acesta isi pastreaza coordonatele intregi . Punctele de pe AB vor avea coordonatele de forma (x,p) , unde p merge de la y-R la y+R . Parcurgem pe rand toate punctele acestui diametru , dand lui p toate valorile intregi cuprinse intre y-R si y+R . Acum pentru fiecare punct P(x,p) , trasam coarda CD ce trece prin P si este perpendiculara pe AB . In final se parcurg toti pixelii de pe aceasta coarda . O problema ar fi acum determinarea limitelor acestei corzi , sa stim de unde si pana unde parcurgem pixelii . Avem insa triunghiurile dreptunghice si congruente OPC si OPD , in care cunoastem OP=p si OC=OD=R ( raza cercului ) . Determinam astfel lungimea segmentelor PC=PD si problema este rezolvata . Sigur ca retinem valoarea intreaga a rezultatului , intrucat vorbim de pixeli . Deoarece P este un punct variabil pe diametru AB , prin parcurgerea tuturor acestor corzi , practic acoperim intreaga suprafata a discului .
Posibil algoritm ( C ) :bool cauta_punct( int x , int y , int R ) {
____for( int p=y-R ; p<=y+R ; p++){
_______ int limita = (int)( sqrt(R*R-(p-y)*(p-y)));//nu mai calculez distanta OP=p-y cu modul deoarece
________//oricum cantitatea vine ridicata la patrat ;
________for(int i=x-limita ; i<=x+limita ; i++)
____________if(Culoare(i,p)=C){
_______________@inregistreaza in baza de date ;
_______________return true;
____________}
____}
____return false;
}