|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.01.2010, 13:22 | #1 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Алгоритм создания генеалогического древа
Всем привет!
Я уже довольно давно собираю данные о своем роде, делаю генеалогическое древо. Количество персонажей в нем у меня ушло за несколько сотен человек. Поэтому я решил хранить данные на компе. Попробовав несколько программ, я не получил хорошего результата. Так как в тех программах нужно просто рисовать древо, а мне это не подходит. Я бы хотел хранить это древо в какой-нибудь базе данных, а когда нужно, прога сама рисовала оптимальный вариант древа. Создать базу достаточно просто. Но тут стал вопрос, как будут связаны между собой люди в этой базе. Я подумал и пришел к выводу, что нужно создать 3 свойства: "родители", "супруги" и "дети". Это я наглядно показал на рисунке 1. Рисунок 2 - это то, как примерно должны расположиться номера людей в древе. Но как перейти от базы, что на Рис.1 к древу, что на Рис.2??? Это главный вопрос. Первым шагом по пути к его решению, на мой взгляд, должно стать расформирование базы на поколения. Например, вот так: 1) 14 2) 9, 11, 13, 5 3) 3, 6, 2, 10, 7, 4 4) 12, 8, 15, 1 Это вроде получается. А вот что мне делать дальше, я не знаю. Поэтому и обратился к Вам. Если у кого-нибудь есть что-то полезное (ссылки, идеи и т.д.), то заранее огромное спасибо! P.S. С праздником!!! |
07.01.2010, 13:55 | #2 |
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
И Вас с праздником!
Как такового решения я не имею, но если есть проблема в рисовании, то используйте стандартный метод рисования в Delphi - поищите в гугле.
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); |
07.01.2010, 15:04 | #3 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Спасибо
С рисованием проблем как раз нет. Это даже рисовать не обязательно. Это можно и html-страничкой сделать и т.д. Нужен способ, чтобы как-то их лучшим образом распределить. |
07.01.2010, 16:50 | #4 | |||
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
Ну попробуй через INI или XML.
Отлично хранят информацию. Пример INI: Цитата:
Цитата:
С XML не работал ниразу, но структура наверное будет лучше: Цитата:
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); |
|||
07.01.2010, 20:01 | #5 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Спасибо большое за помощь, но это к сожалению не то, что нужно. Вы пишете как создать базу данных. Всё это у меня уже есть. Я остановился на INI. Сделал прогу по работе с этой базой. Возможно, что что-то будет лучше, чем INI, но это совсем не важно.
Я специально не останавливался на этих подробностях и сделал на Рис.1 только четыре самых важных столбца (на мой взгляд). Мне просто нужен алгоритм расположения всех этих кружочков и стрелочек. Хотя бы просто русскими словами. Мне нужно то, как должна "мыслить" программа, чтобы их расположить. А лучше, нужен оптимальный вариант расположения. На мой взгляд, оптимальный вариант - это когда стрелки должны быть как можно короче. А где их расположить? Да хоть на простой канве. Это уже подробности языка и желания. Я думаю, что всё это не сложно переделать под что-то другое. Нужен просто метод расположения. Я написал эту тему в данный раздел потому что работаю с Delphi. Может её лучше нужно было написать в "Свободное общение"? P.S. Можно писать хоть так: "Родителей первого поместить туда-то (можно X,Y), детей, если они есть в другое место и т.п.". Мне нужна только идея. Я её к горькому сожалению не вижу. Только придумал первый шаг (см. #1). |
07.01.2010, 20:21 | #6 | |
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
ага, понял) у Вас проблема в расположении считаных строк.
Ну, попробуем... Ну родители в самом верху.. потом дети.. потом их дети и тд и тп. Ну расположение, насколько знаю, регулирует свойство Left, Top. К примеру, делаем преимущетсво в родительской строке: Цитата:
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); |
|
07.01.2010, 21:23 | #7 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Спасибо. Конечно же, смысл понятен. Видимо я никак не могу точно выразить весь поток нахлынувших на меня мыслей. Всё кажется просто, когда "баба, деда, мама, папа да и я с братом". А вот когда поколений 5-7! И в некоторых поколениях не меньше двадцати! Тут проблемы с расположением и начинают сказываться. Я вот быстренько нарисовал две картинки. Информативностью правая ничем не отличается от левой, а вот наглядностью... Посмотрите на левую картинку. "3" и "4" располагаются точно по центральной линии между "8", "9", "10" и "11". "5" находится в "укромном месте", а на правой картинке "5" находится сбоку. И сумма длин всех стрелок на левой картинке гораздо меньше, чем на правой.
Видимо, тут нужно учитывать большое количество факторов. Можно даже позволить пользователю какими-то факторами управлять. К примеру: расстояние между поколениями; минимальное расстояние между персонами; мужчина слева, а женщина справа (или наоборот) и т.д. Всё видимо не так просто, как кажется на первый взгляд. По крайней мере для меня . |
07.01.2010, 21:28 | #8 |
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
Я сдаюсь... З Різдвом! =) Помогут Вам программеры заядлые
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); |
08.01.2010, 11:34 | #9 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Буду надеяться
|
10.01.2010, 21:26 | #10 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Товарищи! У кого-нибудь есть на примете какой-нибудь компонент (для Delphi), который работает со сложными деревьями или блок-схемами? Чтобы можно было нарисовать структуру подобную второму рисунку в посте #1. Чтобы могло быть несколько пар "родителей". И каждый элемент этого компонента можно было задавать в виде привязанности к другим. А не посредством X и Y.
Спасибо! P.S. погуглил-погуглил, а ничего особенно подходящего не нашел. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм создания дерева Delphi | VadEr | Помощь студентам | 5 | 03.11.2009 08:45 |
Создания интерфейса...си | dampirik | Помощь студентам | 1 | 06.07.2009 14:40 |
C# Создания ярлыка | MAcK | Общие вопросы .NET | 6 | 16.08.2008 12:22 |
создания бота | kobras | Работа с сетью в Delphi | 1 | 01.12.2007 14:41 |
Создания Класса | Mickle | Общие вопросы Delphi | 1 | 30.04.2007 00:44 |