Алгоритм интервала графика

Я ищу алгоритм, который был бы полезен для определения x y, координаты для числа возражает для отображения на экране. Каждый объект может быть связан с другим объектом и может быть любое количество отношений и может быть любое количество этих объектов.

Нет никакого ограничения на полный размер области, на которой можно отобразиться, они возражают.

Я пишу это в php и надеялся бы хранить координаты в массиве.

5
задан David 18 April 2010 в 09:37
поделиться

2 ответа

Традиционные названия того, что вы хотите сделать, - это макет графика и рисование графика . В общем, это непростая задача. Диаграммы будут хорошо выглядеть, только если они плоские или почти плоские.

0
ответ дан 15 December 2019 в 06:20
поделиться

Один из способов сделать это - использовать псевдофизическую модель. Ваши объекты обладают силой отталкивания и силы притяжения, если они прикреплены.

Вы перемещаете объекты в соответствии с суммой приложенных к ним сил: на каждом шаге вычисляете сумму сил, приложенных к объекту, и перемещаете его в направлении силы.

В псевдокоде одна итерация будет выглядеть так:

for each object o1
   force[o1] = 0
   for each object o2
      if o1 and o2 are linked
         force[o1] += attraction_force(o1, o2)
      else
         force[o1] += repulsion_force(o1, o2)

for each object o1
   move(o1, force[o1])

И остановить итерации, когда объекты достигли стабильного состояния.

Вам, вероятно, придется поэкспериментировать с другими законами силы. В частности, вы хотите, чтобы соседние объекты быстро достигли равновесия. Я бы поэкспериментировал с интенсивностью силы, линейной по отношению к расстоянию (например, пружина) или квадратичной (гравитационное / электрическое притяжение)

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

3
ответ дан 15 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

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