Имеем: невыпуклый непересекающийся многоугольник. Задача: построить многоугольник, отстоящий от начального на расстояние D. Расстояние D откладывается вдоль биссектрисы угла между смежными ребрами начального многоугольника. Конечный многоугольник должен быть непересекающимся В отдельных случаях (например, когда "берег", а на нем "бухта" с узким "горлом"), когда "горло" "схлопывается" в идеале должны получить два многоугольника: 1-й: цельный берег без горла, и 2-й: бухта, которая превратилась в "озеро". Кто нибудь аналоги видел? В какую сторону копать?
Max Мне вот пришла мысль, что если начать обход многоугольника из какой-то вершины вдоль его границы(в обратном направлении по участкам границы мы никогда не движемся), а в точках самопересечения всегда максимально поворачивать вправо или влево(только НЕ в обратном направлении!!!), то в итоге мы выйдем на какой-то цикл, причём множество этих циклов будет либо границей многоугольника и всех его дыр, либо теми участками границы, которые попадают в область самопересечения и их нужно устранить.
murder только если 0 в центре многоугольника Max для смещения многоугольника в координатах умножаешь все его вершины на 1 0 0 1 0 1 0 0 0 0 1 0 -x -y -z 1 умножаешь на dx а потом возвращаешь его обратно 1 0 0 1 0 1 0 0 0 0 1 0 x y z 1
ах да. уточняю. центром можешь считать точку пересечения максимального числа биссектрис или найти все прямые и устанавливать центр координат на них к примеру треугольник с координатами Код (Text): 0.5 0 1 1 0 0 1 0.5 -tg(30) 1 1 0 0 1 1 -2*tg(30) 1 0 корень(3)/2 1 * 0 1 0 1 = 0 корень(3)/2-tg(30) 1 * 0 1 0 1 = 0 корень(3)-2*tg(30) 1 -0.5 0 1 0 0 1 1 -0.5 -tg(30) 1 0 0 1 1 -1 -2*tg(30) 1 0 -tg(30) 1 1 0 0 0 1/2