Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 12:24   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию Фрактальное дерево

Задача: создать фрактальное дерево на основе изображения с закрашенной областью


Принцип следующий. Картинка делится на 4 части, если хотя бы одна часть из 4х пуста(белый цвет) то на дереве она обозначается 0 (нулем), если полностью закрашена черным цветом то 1(единицей). Ежели в квадрате есть и белый и черный цвет то он продолжает делится на 4,до тех пор пока разделенный квадрат не будет закрашен полностью каким либо цветом.


После деления изображение, наступает фаза построения самого фрактального дерева. Принцип состоит в чем... Тот квадрат который нельзя поделить - считаем листом дерева, т.е. дальше никаких ростков не идет... Тот квадрат, который еще делиться - считать веткой...
Для наглядности прилагаю рисунок :



Вопрос в чем... Посоветуйте уважаемые программисты, на каком языке лучше бы реализовать данную задачу,(VB,C#,C++). И вообще как говориться, "с чего начинается родина" т.е. с чего посоветуете начать?
MeTeOpA вне форума Ответить с цитированием
Старый 17.05.2011, 22:56   #2
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

ну, ребят... хоть какие то мысли...
MeTeOpA вне форума Ответить с цитированием
Старый 17.05.2011, 23:45   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

ну а какие мысли тебе то надо? алгоритм ты сама расписала. язык не важен, пиши на каком умеешь.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 17.05.2011, 23:58   #4
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Да, дело в том что я по сути незнаю как реализовать сканирование изображения, и резки его на квадраты...
MeTeOpA вне форума Ответить с цитированием
Старый 18.05.2011, 10:52   #5
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

C Sharp ниже... Но на вкус и цвет товарища нет.

Код:
Bitmap bmp = new Bitmap(@"C:\1.bmp");

for (int i = 0; i < _bmp.Height; i++)
for (int j = 0; j < _bmp.Width; j++)
{
   if (bmp.GetPixel(j, i) == Color.Black)
   {
   черная и куда то заносим, допустим в "массив1" булевский
   }
    else
    {
    белая
    ]
}
Затем создаём создаём "массив2" в котором будут твои 0 и "деление на 4" какого то размер, после чего проходим массив1 получившийся при обходе выше и проверям Пропорциональное нахождение черных клеток в каком то регионе из "массива1"

с деревом сложнее, можно схитрить и рисовать дерево в treeView
http://www.java2s.com/Code/CSharp/GU...iewExample.htm
Но в узлы засунуть Иконки черные... Вродь мона.
Guy вне форума Ответить с цитированием
Старый 19.05.2011, 11:08   #6
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Guy, а можете дать ссылочку на описание метода класса Bitmap? Я чесно говоря, просто никогда не работал с подобными задачами, поэтому и интересуюсь.... Или мб, книгу какую то...

Кстати TreeView не получиться, ибо сказали что нужно сделать потом чтобы при наведении на линию, выделялся какой "это" квадрат разрезан...
MeTeOpA вне форума Ответить с цитированием
Старый 19.05.2011, 22:49   #7
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

собственно говоря, вопрос остался открытым)) Вопрос формулирую четко : каким образом организовать цикл разрезания изображения?
MeTeOpA вне форума Ответить с цитированием
Старый 20.05.2011, 00:15   #8
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

А зачем обязательно цикл? Можно ведь и рекурсию использовать. Впринципе, практически любая рекурсия может быть заменена циклом, но насколько это целесообразно для такого алгоритма?..
Да и что значит разрезание изображения? вам же все-равно попиксельно сканировать...
Ну, допустим, у вас есть изображение 100x100, выбираете какой-то центр изображения, скажем пиксел 50-50, затем просто запускаете свою процедуру для квадрата что слева сверху и т.д. При этом "вырезать" эту часть изображения или что-нибудь вообще с ней делать не нужно. Это лишние затраты времени. Лучше объявите у себя в классе битмап или еще что-то и пользуйтесь им из своей функции.
mMAg вне форума Ответить с цитированием
Старый 20.05.2011, 00:45   #9
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

просто потом в дереве придется же наводить курсор мыши и подсвечивать вырезанный квадрат...

Если можно кто то дайте мануал по работе с Bitmap! ! ! Я как говориться "дуб дубом" в этом вопросе...

Последний раз редактировалось MeTeOpA; 20.05.2011 в 00:48.
MeTeOpA вне форума Ответить с цитированием
Старый 24.05.2011, 23:24   #10
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

up! так сказать....
MeTeOpA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win Api.Фрактальное изображение дерева. bitmania Помощь студентам 1 11.05.2011 22:50
Я дерево Кукла_колдуна Паскаль, Turbo Pascal, PascalABC.NET 0 20.03.2011 23:07
Фрактальное сжатие изображений. EVG! Мультимедиа в Delphi 2 22.11.2010 17:17
Дерево в С# vedro-compota C# (си шарп) 5 07.11.2010 14:02
Дерево Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2008 08:42