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