Easeful Opublikowano 30 Stycznia 2010 Udostępnij Opublikowano 30 Stycznia 2010 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 Więcej opcji udostępniania...
Marek.S Opublikowano 30 Stycznia 2010 Udostępnij Opublikowano 30 Stycznia 2010 pierwsza uwaga tycząca się Twojego skryptu: GML (czysatakiesame) if ( abs( kolor1 - kolor2 ) <= 15 ) return true else return false; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 30 Stycznia 2010 Udostępnij Opublikowano 30 Stycznia 2010 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 Więcej opcji udostępniania...
Platyna Opublikowano 30 Stycznia 2010 Udostępnij Opublikowano 30 Stycznia 2010 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 Więcej opcji udostępniania...
Easeful Opublikowano 30 Stycznia 2010 Autor Udostępnij Opublikowano 30 Stycznia 2010 czyli: GML c1=argument0; c2=argument1; lim=argument2; dif=0; dif+=abs(color_get_red(c1)-color_get_red(c2)); dif+=abs(color_get_green(c1)-color_get_green(c2)); dif+=abs(color_get_blue(c1)-color_get_blue(c2)); return (dif<=lim); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 30 Stycznia 2010 Udostępnij Opublikowano 30 Stycznia 2010 Dokładnie tak :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę