(Нематематическое решение)
Если особо большая точность не нужна и многоугольников не сотни тысяч, то можно поступить по тупому: задать сетку с нужным шагом (bitmap) размерами чуть больше окружности, закрасить на ней все многоугольники (с проверкой на сверхмалые многоугольники), посчитать количество незакрашенных узлов сетки в пределах заданного радиуса. Математики немного, зато на практике приближённый результат можно получить быстрее. К тому же процессы хорошо распараллеливаются или можно вообще видеокарту нагрузить, это её родное, она и много миллионов многоугольников сдюжит за реальное время.