2
covaxК сожалению, ваш рисунок увидеть не удалось (http/403).
Цитата:
А если вообще не отступать, т.е. центры прям на линиях брать, как вы первый раз и написали?
Ну эти центры все равно придется так или иначе учитывать, чтобы правильно выбрать ориентацию дуги (т.е., направлять дуги выпуклостью по направлению от многоугольника).
2
screenshotМожно ещё так попробовать.
По-прежнему от выбранной вершины вдоль одной из прилежащих к ней сторон строится ряд окружностей одинакового радиуса (первая -- с центром в выбранной вершине, вторая -- на некотором удалении от вершины, но на том же отрезке-стороне, и так далее).
В качестве очередной контрольной точки набора дуг берется одна из точек пересечения (а именно, наиболее удаленная от текущей стороны во вне) очередной окружности с предыдущей построенной (запомненной) окружностью. Вообще, окружность запоминается только если были пересечения с предыдущей запомненной (даже если она была построена на другой стороне многоугольника).
На деле, при "запоминании" окружности, сохранять нужно именно координаты центра окружности и координаты новой контрольной точки дуг (i.e., как уже было сказано, точки пересечения запоминаемой окружности с ранее запомненной с учетом наибольшей удаленности от текущей стороны).
Имея такой список пар точек плоскости уже не составляет труда сформировать список самих дуг.
Кстати, не могли бы вы показать, как себя ведет ваш эталонный алгоритм в "узких" углах.