это не так сложно (в данном случае) - вы задаете алгоритму два ограничивающих прямоугольника ваших объектов (таким образом, объект дыры находится внутри этого прямоугольника) и массив с информацией о цвете для них.
Алгоритм предполагает, что точка принадлежит объекту, если она не прозрачна - это важно.
Первым шагом является вычисление пересекающегося прямоугольника - если вы пересекаете два прямоугольника, стороны которых параллельны осям, как в этом случае - вы снова получите прямоугольник или пустой набор.
Следующим шагом является итерация в этом пересекающемся прямоугольнике для всех (x, y) -координат insiede - сначала y, затем x, так что сначала вы получите нормальный x, затем y внутри, но это второстепенная точка и не важно .
Затем, наконец, алгоритм получает цвет для объектов A и B в текущем пикселе (x, y) - если оба цвета НЕ прозрачны, то пиксель находится в обоих объектах, и объекты должны пересекаться в этой точке - поэтому Алгоритм заканчивается "ДА, они пересекаются"
Если все пиксели в пересечении ограничивающих рамок были отмечены, и не было обнаружено ни одного общего (например, непрозрачного) пикселя, объект не пересекается, и поэтому алгоритм завершается с «НЕТ, они не пересекаются»
Надеюсь, это поможет.