Войти
ПроектыФорумОцените

Фракталы

#0
9:35, 28 дек. 2004

Решил выложить программу с исходниками, которая рисует фракталы. Писалась для поддержания себя в форме, поэтому любая критика, советы, пожелания, замечания, советы, вопросы и исправления приветствуются :)

Сразу скажу: я сам понимаю, что очень многое можно улучшить. Но не все же сразу :) Мне вот сейчас хочется уйти от glBegin/glEnd, переписать GUI и т.п. Вот что общественность попросит в первую очередь, то и изменю :)

файл в качалке:
http://www.gamedev.ru/download/?id=1617

шот:
Изображение удалено


#1
15:36, 28 дек. 2004

чувак, супер

#2
17:05, 28 дек. 2004

Как на твоей проге... сделать снежинку Мандельборта??? че-то не получается...

#3
8:29, 29 дек. 2004

Серж
>чувак, супер
пасиба :)

Sunrash
>Как на твоей проге... сделать снежинку Мандельборта??? че-то не получается...
:))) И не получится. Фрактал Мандельброта строится совсем иначе, не из отрезков.

all
А каких-то коментариев по коду или претензий к интерфейсу, улучшений в конце-концов, нету? Уже 45 скачиваний и всего 2 поста :( Неужели никакого интереса не вызывает?

#4
12:38, 29 дек. 2004

интерфейс нужно нарисовать более солидный, а то как детская аркада
еще настройку разрешения!! а то у меня маленькое такое окошечко получилось
и сделать бы еще результат в отдельном окне, а то интерфейс все перекрывает
и хелп типа *.HLP тоже не помешает там типа отпределение фрактала как работать в проге
сделать выбор цвета фрактала
все используемые функции типа Показать скрыть редакторы , вкл/выкл привязок, кол-во итераций  должны быть кнопками панели, типа как в ворде сделай вверху кнопки слева  редактор, остальное фрактал
иконку нарисуй
и в привязке сделай привязку только по точкам а то между точками тоже рисуется линия и шаг можно в настройках менять
и сделай 3D :))))))))))


блин сколько не пытался ничего сделать красивого не удалось :( , зато посмотрел как надо, там много уже готовых :)
Прикольная прога, удачи с версией 1.1 :)

#5
12:39, 29 дек. 2004

Sunrash
Фрактал Мандельброта строится на комплексной плоскости. Цвет точек на этой плоскости показывает степень расходимости некоторой функции. Рисовал когда-то такой в Паскале. Найду - выложу.
dub Можно ли в твоей проге задавать размерность фрактала?

#6
6:39, 30 дек. 2004

Да отличная реализация...

Быстро считает...:):):)

#7
8:37, 30 дек. 2004

ShadowDev
Спасибо за развернутый комметарий. Именно таких коментариев и хотелось.

>интерфейс нужно нарисовать более солидный, а то как детская аркада
Перерисую: это как раз не проблемма.

>еще настройку разрешения!! а то у меня маленькое такое окошечко получилось
Таскание за угол? Ок. Сделаю :)

>и сделать бы еще результат в отдельном окне, а то интерфейс все перекрывает
Гм. Это идея. Мне предлагали добавить перетаскивание фрактала (кроме вращения и масштабирования). Но в отдельном окне, я думаю, будет лучше. Спасибо :)

>и хелп типа *.HLP тоже не помешает там типа отпределение фрактала как работать в проге
Каюсь. Хелп действительно нужен. Всем, кому показывал, сначала приходилось обьяснять, как пользоваться :) Уже осознал :)))

>сделать выбор цвета фрактала
Ок. Подумаю. Может еще добавлю плавное изменение цвета, в зависимости от того, на какой итерации добавился отрезок.

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

>иконку нарисуй
Будет :)))

>и в привязке сделай привязку только по точкам а то между точками тоже рисуется линия и шаг можно в настройках менять
Не совсем понял: к привязкам прилипают только точки (то бишь конци отрезков)

>и сделай 3D :))))))))))
Гыы... А есть идеи КАК задавать трехмерный фрактал? В литературе преимущественно описывают плоские фракталы. К тому же их как-то легче на иллюстрациях приводить :))) Я, наверно, сначала сделаю вместо отрезков сплайны.

>блин сколько не пытался ничего сделать красивого не удалось :( , зато посмотрел как надо, там много уже готовых :)
Мой косяк - хелпа не сделал. Попробуй поменять уже готовые. Порой фракталы меняются очень сильно.

>Прикольная прога, удачи с версией 1.1 :)
Сенькс.

Skunk
>Можно ли в твоей проге задавать размерность фрактала?
Цифры (не на нумпаде) задают нужную размерность, и еще можно менять размерность нажимая +, - (на нумпаде). Это, конечно косяк (что надо разбираться: на нумпаде кнопка или нет, иправлюсь)

Axepert
>Быстро считает...:):):)
8)
Это не шутер, что для современного компьютера посчитать миллион точек? Да еще не какждый раз, а только когда в редакторе подвинули какую-то точку... Так, тьфу. Так что скорость - это не моя работа, я то как раз сделал все тупо в лоб. А вот если бы я не поставил ограничение на размерность фрактала, то тогда да - тормозило бы сильно: очень быстро растет количество отрезков. Даже памяти начинает не хватать :) Свопиться :)))

#8
8:50, 30 дек. 2004

all
Так как со справкой накосячил: не описал, как пользоваться редакторами, опишу здесь:
1) в нижнем редакторе задается начальная фигура фрактала
2) в верхнем редакторе задается набор ломаных, на которые заменяется каждый отрезок текущего фрактала на очередной итерации
3) итерацию фрактала можно поменять нажав цифру или +,- (интересно бывает посмотреть, как рачтет фрактал)

Как работать с редакторами ломаных:
1) левая кнопка предназначеня для перемещения и вставки точек.
нажатие на левую кнопку приводит к:

  • добавлению новой ломаной, если щелкнули на пустом месте (лучше, удерживая левую кнопку, отвести курсор мыши в сторону - чтобы оттащить конец новой ломаной от ее начала)
  • началу перетаскивания точки, если щелкнули на точке
  • вставке точки в отрезок и началу ее перетаскивания, если щелкнули на отрезке

  • отжатие (равно как и выход курсора за пределы редактора) приводит к прекращению перетаскивания точки

    2) правая кнопка предназначена для удаления точек и изменения статуса отрезков

  • нажатие на точке приводит к удалению.
  • нажатие на отрезке приводит к его изменению (сплошной/пунктирный). Пунктирные отрезки при дальнейшем построении фрактала на ломаные из верхнего редактора не заменяются. (это надо, чтобы можно было строить фракталы типа ковра серпинского или листа папоротника)
  • Как строится фрактал:
    1) На нулевой итерации на экране видна фигура из нижнего редактора
    2) При увеличении итерации каждый отрезок (кроме помеченных в редакторе, как пунктирные) фрактала, заменятеся на ломанные из верхнего редактора. Для этого необходимо сопоставить концам заменяемого отрезка две точки в верхнем редакторе. Те точки ломанных, которые совпадут с концами отрезка помечаются белыми крестиками. Ими считаются первая и последняя точки, добавленные в редактор.

    Вот.

    #9
    13:27, 30 дек. 2004

    dub
    сделать трехмерным фрактал можно примерно так:
    порождающий фрагмент задаешь так же на плоскости, а при генерации потомка поворачиваешь его вокруг оси (направляющего вектора) того участка родителя к которому крепится потомок.
    Ну и плюс все линии заменить цилиндриками :)).

    Да .... кол-во точек с увеличением максимальной глубины растет к сожалению экспоненциально ...

    #10
    15:00, 30 дек. 2004

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

    #11
    14:15, 4 фев. 2005

    >>Как на твоей проге... сделать снежинку Мандельборта??? че-то не получается...
    >:))) И не получится. Фрактал Мандельброта строится совсем иначе, не из отрезков.

    Вообще-то фрактал Мандельброта и снежинка Мандельброта это две разные вещи. Фрактал Мандельброта как уже било сказано это итеративное отображение функции комплексного переменного на плоскости, а снежинка Мандельброта  это обобщенная снежинка Коха.

    ПроектыФорумОцените

    Тема в архиве.