![]() |
Отрисовка Графа
Добрый день, уважаемые форумчане
Разрабатываю сайт, позволяющий пользователям рисовать свое генеалогическое дерево. В базе данных хранятся родственники и связи между ними, задача: отрисовать средствами Action Script граф, каждой вершиной которого будет один родственник, а дугой графа - родственная связь Подскажите как лучше это реализовать? может есть специализированные библиотеки для отрисовки графов? Если нет, то хотябы какой алгоритм будет наиболее подходящим для данной задачи Граф связный, родственники распологаются по "уровням" в зависимости от поколения, например дедушки выше отцов, а внуки ниже детей итп. Вот примерно что должно быть: http://f2.s.qip.ru/~BtVUnWfO.png http://f4.s.qip.ru/~BtVUnWfP.png Очень надеюсь на вашу помощь, спасибо! |
А не лучше сортировку делать на сервере, и возвращать результат флешу?
Прикрутим к каждому элементу, скажем, параметр parent. Также должна быть связь married (по идее). Далее ищем у кого сколько парентов - рекурсивно идём вверх пока не допрём до элемента без парентов. По ходу сортировки записываем кол-во парентов в вычисленные элементы - чтобы если они в свою очередь также окажутся парентами, сразу задать их детям уровень парента+1 и оборвать итерацию цикла. Если по ходу сортировки у элемента появляется второй парент того же уровня, не учитываем этого парента, т.к. это продукт брака (связь пара(мама+папа) - ребёнок). Далее ходим от уровня к уровню и вычисляем кто на ком женат. Могут быть случаи что кто-то не женат ни на ком со своего уровня (как Саша Попо... на скринах - нет парента, но не на первом уровне), опускаем его и его чайлдов до следующего уровня, пока не вычислим с кем индивидуум состоит в браке. По ходу сортировки мы пометили кто является продуктом брака ( 2 парента того же уровня ) и задаём соответствующие связи. |
| Часовой пояс GMT +4, время: 09:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.