Как изобразить 2D ортогональную сетку (Python) - PullRequest
4 голосов
/ 24 января 2011

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

class room(exits={}) :
    #Other code in here, not relevant
    exits = {}


room_list = {}

room_list['room_1'] = room(exits={'north':'room_2'})
room_list['room_2'] = room(exits={'south':'room_1','west':'room_3'})
room_list['room_3'] = room(exits={'east':'room_2'})

Так что я хотел бы каким-то образом представить эти комнаты в сетке, кромесвязь между комнатами.

1 Ответ

2 голосов
/ 24 января 2011

Хотя вопрос не очень понятен, похоже, вам нужно что-то вроде GraphViz [1].Это в основном программа для автоматизации компоновки блок-схем, которая полностью изоморфна вашей проблеме.Существует интерфейс Python, PyGraphViz [2], который может быть полезен для вас.

Если вы хотите сгенерировать свой собственный механизм компоновки (сравнимый с GraphViz), обязательно проверьте алгоритм многомерного масштабирования [3], который используется компонентом neato программы GraphViz.

[1] http://www.graphviz.org/

[2] http://networkx.lanl.gov/pygraphviz/

[3] http://en.wikipedia.org/wiki/Multidimensional_scaling

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...