Итак, прошу уважаемых лорчан разработать алгоритм (отличная разминка для мозгов).
Имеется полигональная модель. Кто не вкурсе - полигон это пространственный многоугольник, ограниченный ребрами, состоящий из граней. Отличие грани от полигона - у грани всегда 3 вершины, у полигона может быть много (да, полигон может быть не плоским, а кривым)
Каждый полигон и вершина модели пронумерованы, каждое ребро также имеет численный ID (от 1 до их количества). Собственно можно считать, что номера никак не связаны. Полигону может быть присвоено несколько групп сглаживания. Ребро, находящееся между полигонами с хотя бы одной общей группой сглаживания, становится сглаженным. Ребро, находящееся между двумя полигонами не имеющими общих групп сглаживания, становится твердым.
Итак, задача - основываясь на заданном наборе ребер (допустим, ребра номер 1, 5, 8, 9, 10 и 12), которые должны быть твердыми, присвоить полигонам минимально возможное количество груп сглаживания.
Возможно - получить список ребер, принадлежащих полигону, полигонов ребру, полигонов вершине, вершин полигону, вершин ребру и ребер вершине.
Третий день бьюсь над алгоритмом, не могу придумать - выходят только костыли с огромным количеством используемых групп сглаживания.