да, понять непросто.
Есть множество (100-1000) выпуклых полигонов (многоугольников)
Висят в пространстве касаясь или не касаясь друг друга ориентированные как угодно? Или это всё на плоскости происходит ?
Необходимо от каждой вершины каждого полигона построить касательные (по 2 касательные на каждый)
Что за касательные? ОК, пусть две прямые к каким-то точкам полигона.
на все другие полигоны,
Т.е. от каждого полигона идут две прямые ко всем други за некоторым исключением.
которые не пересекают (касаться могут) ни один из полигонов
Вроде ясно.
Если у вас N полигонов, то задача имеет сложность N^2 только для прямых.
Т.е. скорость будет сильно падать с увеличением количества полигонов.
для 20 полигонов это работает почти 4 секунды. Но сколько это будет работать для 100 полигонов? Для 1000?
Считаем - в 5 раз больше полигонов - в 25 раз дольше, т.е. 100 секунд.
В 40 раз больше - в 1600 раз дольше. Т.е. полтора часа.
Если полигонов много, это надо на CUDA делать, такие вещи хорошо параллелятся.