![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2012
Сообщений: 4
|
Добрый день, уважаемые форумчане
Разрабатываю сайт, позволяющий пользователям рисовать свое генеалогическое дерево. В базе данных хранятся родственники и связи между ними, задача: отрисовать средствами Action Script граф, каждой вершиной которого будет один родственник, а дугой графа - родственная связь Подскажите как лучше это реализовать? может есть специализированные библиотеки для отрисовки графов? Если нет, то хотябы какой алгоритм будет наиболее подходящим для данной задачи Граф связный, родственники распологаются по "уровням" в зависимости от поколения, например дедушки выше отцов, а внуки ниже детей итп. Вот примерно что должно быть: ![]() ![]() Очень надеюсь на вашу помощь, спасибо! |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 431
|
А не лучше сортировку делать на сервере, и возвращать результат флешу?
Прикрутим к каждому элементу, скажем, параметр parent. Также должна быть связь married (по идее). Далее ищем у кого сколько парентов - рекурсивно идём вверх пока не допрём до элемента без парентов. По ходу сортировки записываем кол-во парентов в вычисленные элементы - чтобы если они в свою очередь также окажутся парентами, сразу задать их детям уровень парента+1 и оборвать итерацию цикла. Если по ходу сортировки у элемента появляется второй парент того же уровня, не учитываем этого парента, т.к. это продукт брака (связь пара(мама+папа) - ребёнок). Далее ходим от уровня к уровню и вычисляем кто на ком женат. Могут быть случаи что кто-то не женат ни на ком со своего уровня (как Саша Попо... на скринах - нет парента, но не на первом уровне), опускаем его и его чайлдов до следующего уровня, пока не вычислим с кем индивидуум состоит в браке. По ходу сортировки мы пометили кто является продуктом брака ( 2 парента того же уровня ) и задаём соответствующие связи. Последний раз редактировалось AlexLucas; 27.11.2012 в 02:46. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|