![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Пишу я значит визуализацию бинарных деревьев. Суть задачи - есть класс для работы с бин. деревом. Надо по имеющемуся дереву отрисовать его в компаненте, скажем PaintBox, примитивами. То есть кружки и линии.
Библиотеки сторонние использовать крайне не хочу. Среда разработки - Borland C++. Но даже если не кодом так помогите хотя бы подробным описанием алгоритма - как просчитать всё эту отрисовку. Дня три уже сижу - ничего путного пока не пришло в голову. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
||||
|
||||
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Спасибо конечно за линк, но нельзя ли по русски и всё таки на С\С++... VB я не знаю и код что там приведён - адские письмена... |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
I have been translating it personally for you. Enjoy!
|
||||
|
|||||
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Thanks 4 your translating for me personal but may be u explain me parametrs that function.
cdc - я понял это контекст устройства на котором рисуем... depth - глубина текущего узла X Y - относительно каких координат начинаем рисовать - так? остальные параметры загадка 4 me |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
наверно. это не моя функция, не могу точно знать. double length - длина какая-то. double theta, double dtheta - поставь туда значения разные, посмотри что происходит. double length_scale - это масштаб сужения / растягивания изображения |
|||
|
||||
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Посмотрел функцию - отрисовку делает тока в общем виде... то есть рисует явно - узел и 2 потомка.... моя же задача стоит отрисовывать по существующему дереву... то есть могут быть все 2^(n-1) узлов на каждом уровне.. .а могут быть узлы у которых только по одному потомку... ну для пример
2 / \ 1 3 / \ \ 0 2 4 тут вот у узла 1 - два потомка, а у узла 3 - один... следовательно нарисовать надо () / \ () () / \ \ () () () ну это для примера. той функцией такого не сделать! |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Может попробовать рисовать снизу вверх?
|
|||
|
||||
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Да нее... я уже сам дошёл до решения... проще всё на самом деле... тока дерево получается растянутым... но масштабирование рулит и всё такое... всем спасибо..
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
||||
|
||||
| Addidas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Идея проста... я завёл в деревьях для каждого узла три доп поля.... два поля это координаты - X и Y, а третье это поле указывающее какой это узел - левый, правый или корень... Далее рекурсивно расчитывал координаты по принципу - на каждый уровень дерева общую ширину холста надо делить на 2 ^ (текущий уровень)... ну и соответственно корень встанет ровно в серединку, а все остальные будут строиться относительно него уже... сам код :
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
Addidas, спасибо
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |