begemot_sun
@begemot_sun
Программист в душе.

Как построить выпуклый многоугольник по известным связям вершин?

Есть некоторый список ребер между вершинами:
Например: [{A,B}, {B,C}, {C,A}]
Известно что длина каждого рёбра такого многоугольника должна стремиться к некоторой величине L. Т.е. быть может больше, или меньше -- но все же где то в тех районах )
Так вот, требуется по данной записи найти координаты вершин такого многоугольника, который бы был бы "максимально" выпуклым (где это возможно). Понятное дело, что решений удовлетворяющих такому условию может быть бесконечно много. Но с учетом всех поворотов, скорее всего оно всегда одно. Как его найти ?

Примеры записи:
[{A,B}, {B,C}, {C,A}] - равносторонний треугольник с длиной стороны L
[{A,B}, {B,C}, {C,D}, {D,A]] - квадрат c длиной стороны L.
[{A,B}, {B,C}, {C,D}, {D,E], {E,A}] - 5ти угольник с длиной стороны L.
[{A,B}, {B,C}, {C,D}, {D,E], {E,A}, {C,A}] - равносторонний треугольник соединенный с квадратом по одному из рёбер.

Можно взять, построить физическую модель отталкивания зарядов со связями в виде пружин, и итеративно придти к решению (которое может не удовлетворять начальным условиям). А что еще можно придумать тут ?
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы