Позиционировать элементы без перекрытия - PullRequest
0 голосов
/ 17 июня 2010

У меня есть несколько прямоугольных элементов, которые я хочу разместить в 2D-пространстве.Я рассчитываю идеальную позицию для каждого элемента.Теперь моя проблема в том, что многие элементы перекрываются, так как очень часто идеальные позиции сосредоточены в одном регионе.Я хочу максимально избегать совпадений (хотя не обязательно, чтобы они были идеальными).Как я могу это сделать?

Я слышал, физические симуляции подходят для этого - это правильно?И кто-нибудь может предоставить пример / учебное пособие?

Кстати: я использую XNA, если вы знаете какую-либо библиотеку .NET, которая выполняет именно эту работу - скажите мне!

Ответы [ 3 ]

1 голос
/ 18 июня 2010

Один из способов использования физического движка:

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

Я полагаю, что подобные идеи (эвристика, основанная на силе) используются при определении привлекательных схем графиковузлы и ребра один).

Отказ от ответственности: я сам этим не пользовался.

Надеюсь, это поможет!

1 голос
/ 17 июня 2010

Box2D - это свободно используемая (бесплатная) физическая библиотека, которая может выполнить необходимую задачу: Ссылка

0 голосов
/ 17 июня 2010

Алгоритм, который вы ищете, это линейная интерполяция .XNA имеет собственную функцию lerp .

...