Исправил очередной баг. Заключался в том, что в функции сечения полигона некорректно обрабатывалась ситуация, когда последние две вершины полигона лежали на секущей плоскости. Исправил добавлением условия после цикла.