Если вы рассматриваете RGB как трехмерное пространство с осями R, G и B, вы можете определить «закрывающие цвета» как куб или сферу вокруг цвета и вернуть все цвета внутри него (или проверить данный цвет, если он достаточно близко). Формулировки для этого довольно просты:
Original color R, G, B
Cube with side length L around it:
All colors between (R - L/2, G - L/2, B - L/2) and (R + L/2, G + L/2, B + L/2)
Sphere with radius R around it:
New color R_new, G_new, B_new is inside if
delta_r * delta_r + delta_g * delta_g + delta_b * delta_b < R * R
where
delta_r = abs(R - R_new)
delta_g = abs(G - G_new)
delta_b = abs(B - B_new)
Использование сферы вместо куба - это "правильный" способ, но он не будет иметь большого значения для маленьких, а цвета внутри куба немного легче вычислить.