Предполагая, что у вас есть выровненные по оси ограничивающие блоки, вы можете отсортировать список точек по их координате x, найти места в точках списка, находящиеся внутри или снаружи ограничивающих рамок, с помощью бинарного поиска и потенциально отбросить большое количество точек в один раз. Повторите для координаты y. Затем продолжайте, как и раньше, с остальными точками. Вы можете выполнить полигональную триангуляцию, чтобы ускорить тестирование внутри ограничительной рамки.
Лучше всего будет работать, если площадь плоскости намного больше площади многоугольников, а многоугольники достаточно компактны (то есть не длинные и не тонкие, что может дать вам много ложных срабатываний).