Алгоритм серьёзный, боюсь, бесплатно вам его никто не реализует. Я бы поступил как:
- Провёл бы контур, аналогичный границе, но внутри неё на таком расстоянии, которое достаточно мало́, чтобы проведённый контур сливался с границей;
- разбил бы только что проведённый контур на отдельные кольца (при наличии самопересечений);
- для каждого кольца провёл бы внутри ещё один контур;
- соединил бы проведённые внутренние контуры со внешними;
- для каждого из оставшихся колец повторял бы алгоритм.
И ещё, алгоритм кратчайшего пути через все точки — это
задача коммивояжёра, известная своей трудоёмкостью. Боюсь, оптимизировать тут что-либо будет достаточно тяжело, это больше задача для НИИ.