Skocz do zawartości

Różnica koloru


Easeful

Rekomendowane odpowiedzi

Są dwa kolory:

 

GML
kolor1=jakistamkolor;

kolor2=jakistamkolor;

 

No to żeby sprawdzić czy są takie same wystarczy jedna linijka: if kolor1=kolor2

Ale teraz taka sytuacja, załóżmy że 1000 to czarny a 0 to biały, reszta to pomiędzy:

 

GML
kolor1=1000;

kolor2=999;

 

Teraz między tymi kolorami jest różnica (wynosząca 1), no ale gdyby narysowac dwa kwadraty o tych kolorach to każdy jeden człek uznałby że są takie same więc można sobie odpuścić. No i wtedy załóżmy że taki limit to 15 czyli:

 

czy_sa_takie_same()

GML
kolor1=1000;

kolor2=985;

limit=15;

wynik=false;

if kolor1>kolor2

{

if kolor1-kolor2<=limit

{

wynik=true;

}

}

else if kolor1<kolor2

{

if kolor2-kolor1<=limit

{

wynik=true;

}

}

else wynik=true;

return wynik;

 

 

Kod taki na szybko napisany, ale wiecie o co chodzi. No i teraz niby z pozoru wygląda na to że umiem to zrobić, a jednak tak średnio na jeża. Wiem że to jakoś tak chyba wygląda, np c_jakiskolor=255255255; i to jest chyba RGB

 

Umiałby w takim razie ktoś przerobić ten skrypt na takie sprawdzanie z limitem kolorów w RGB? Bo się na tych kolorach ani trochę nie znam, i nie chce mi sie pisać skryptu na chama bo sie okaże że źle i bez sensu.

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli jak, chcesz porównywać wszystkie kanały?

 

(abs(r1 - r2) <= tol && abs(g1 - g2) <= tol && abs(b1 - b2) <= tol)

 

Kanał z koloru wyciągasz chociażby color_get_red()

 

Ed: A, Marek, wystarczy return ( abs( kolor1 - kolor2 ) <= 15 ), po kija to przedłużać :P

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdzaj sumę różnic każdego składnika.

 

GML
roznicaR=abs(kolor1R-kolor2R);

roznicaG=abs(kolor1G-kolor2G);

roznicaB=abs(kolor1B-kolor2B);

roznica=roznicaR+roznicaG+roznicaB;

 

return (roznica<=limit);

 

Chyba istnieje jakaś funkcja do wyciągania wartości poszczególnych składowych RGB.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...