Это зависит от того, должна ли ширина маршрута иметь ширину. Если объект, который должен перемещаться, имеет конечный размер, вам нужно взять разницу Минковского многоугольника вашего домена с многоугольником движущегося объекта, а затем попытаться проложить маршрут через него.
Один из способов точно вычислить пути - это вычислить граф видимости многоугольника. Граф видимости имеет вершины, соответствующие вершинам многоугольника области (возможно, с отверстиями, где находятся препятствия), и две вершины соединены ребром, если они могут «видеть» друг друга. Форма является проходимой, если существует множество ребер, соединяющих вход с выходом. Вы также можете вычислить такие вещи, как кратчайшие пути. Вычисление графика видимости наивным способом не сложно, но медленно. Есть очень продвинутые алгоритмы для этого, но они (AFAIK) не были реализованы. Я пытался реализовать несколько лет назад, но результаты были весьма посредственными. Большинство из них принимают вершины в общем положении, используя точную арифметику, тогда как в практических приложениях используются числа с плавающей запятой.