2009-09-10 1 views
2

вот проблема, которую я пытаюсь решить:Как распределить 5 точек равномерно на неправильную форму?

У меня неправильная форма. Как я буду равномерно распределять 5 баллов на этой фигуре, чтобы расстояние между каждой точкой было равно друг другу?

+4

Это один из тех случаев, когда изображение определенно стоит 1000 слов. –

+1

Вы имеете в виду выбрать произвольную точку вдоль края формы, затем поместить еще 4 точки, каждый 1/5 от общего периметра от последнего? Или по точкам вы имеете в виду вершины? – Eric

+0

Это пахнет домашней работой ... –

ответ

6

это математически невозможно. Он будет работать только для небольшого подмножества базовых фигур.

Есть, однако, некоторые решения, которые вы можете попробовать:

  1. Аналитический подход. Начните с точки P0, создайте сферу вокруг P0 и пересечь ее с базовой формой, предоставив вам набор кривых C0. Затем создайте еще одну точку P1 где-нибудь на C0. Снова создайте сферу вокруг P1 и пересечь ее с помощью C0, предоставляя вам набор точек C1, ваша третья точка P2 будет одной из точек в C1. И так далее. Такой подход гарантирует дистанционные ограничения, но он также сильно зависит от начальных условий.

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

  3. Отбор проб. Преобразуйте базовую геометрию в пространство воксела и начните выкапывать все вокселы, которые слишком близки к недавно вставленной точке. Это гарантирует, что вы никогда не столкнетесь с двумя точками слишком близко друг к другу, но также испытываете проблемы с толерантностью (и, возможно, с производительностью).

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

+6

Какие базовые фигуры вы говорите? Невозможно разместить пять точек в пространстве (не более трех измерений) и все парные расстояния равны. Это легко увидеть из аналитического подхода, который вы упомянули. Первые три точки (ABC) образуют равносторонний треугольник; следующий (D) сделает его обычным тетраэдром. Когда вы пытаетесь поместить пятый (E), если вы сделаете его эквидистантным от ABC, он будет либо в точке D, либо в отражении D над плоскостью, определенной ABC, а затем DE не будет правильным расстоянием. – Cascabel

+0

Я не совсем уверен, что вы подразумеваете под природой геометрии и ограничениями ... но неправильная форма - это локальность/окрестности. узлы - точки широты и долготы – saliem

+0

@Jefromi; вы не можете иметь ВСЕ точки на равном расстоянии друг от друга, но если у вас есть 5 точек и 10 ограничений расстояния, решение * может быть возможно. –

8

Давид говорит, что это невозможно, но на самом деле есть ответ из левого поля: просто положите все свои точки друг на друга! Все они будут иметь одинаковое расстояние до всех остальных точек: ноль.

Фактически, это единственный алгоритм, который имеет решение (т. Е. Все попарные расстояния одинаковы) независимо от формы ввода.

Я знаю, что вопрос задает вопрос «равномерно», но поскольку это формально не определено, я ожидаю, что это просто попытка объяснить «все попарные расстояния одинаковы», ».

+1

LOL умное решение. @ Redtuna – saliem