Сори, сейчас с реализацией не помогу, но я бы действовал по следующему алгоритму.
Пляшем не от квадратов, а от окружности. Первым шагом находим все квадраты, которые она пересекает. Вторым шагом проверяем найденную группу квадратов на "серость" )
Нам нужно определиться, что координатой квадрата мы будем считать координату его верхнего левого угла. Таким образом для первого шага находим все квадраты, которые удовлетворяют условиям:

Код AS3:
if ((squareX >= circleX - R) && ((squareX + 1) < circleX + R) && (squareY >= circleY - R) && ((squareY + 1) < circleY + R)) {
allGrayFlag = allGrayFlag && array[squareX + squareY * width];
if (!allGrayFlag) break;
}
if (allGrayFlag) {
trace("Принадлежит!");
} else {
trace("Облом.");
}
P.S.
код написан прямо тут есличё )