(Как всегда) неожиданно подкрался
финал конкурса, и я в связи с этим внезапно осознал, что в моем решении затаился неприятный баг, связанный с математикой на полигонах. Починить мой колхозный метод с налету не удалось, поэтому пришлось делать по-уму.
Путем непродолжительного гуглежа была найдена необходимая бумага
Efficient Clipping of Arbitrary Polygons и (с некоторым трудом) мне удалось ее переложить на CL. Результат я чуток вылизал и оформил в виде отдельного пакета CL-GREINER, можно забрать здесь:
https://bitbucket.org/swizard/cl-greiner/ .
REPL в подобных проектах, конечно, вещь совершенно незаменимая. Но одного репла мне все равно не хватило, пришлось делать какую-то визуализацию, чтобы глазом оценить результат. Сначала пытался рисовать текстовыми звездочками, но потом вконец задрался, и пришлось осваивать CL-GTK2 имени
dmitry-vk для графического отображения.
В результате получилось как-то так (московская область против адыгейской, развернутой на 213 градусов):
POLYGONS-AND
POLYGONS-OR
POLYGONS-CLIP