2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Расчет для абстракций [fractal flame]
Сообщение20.07.2017, 11:10 


20/07/17

40
Как сделать расчет разбрасывающий точки в форме сложной абстракции? Похожей на сложную поверхность с кучей пустот, мостиков и волн и т.п.
Изменили параметры и уже совсем другая форма.
Например такие, 3 ветви симметрии.
Есть идеи?
Изображение

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение20.07.2017, 11:30 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Это называется fractal flame.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение20.07.2017, 13:40 


20/07/17

40
А другой способ расчета? Может некое самодельное уравнение?
Или некий алгоритм как получать подобное?

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение20.07.2017, 18:11 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Алгоритм так и называется: fractal flame. Старый, известный, неоднократно в разном софте реализованный и достаточно простой для самостоятельного воплощения. Гугл вам в помощь.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 11:03 


20/07/17

40
Давно знаю про fractal flames, сейчас попробовал понять его. Если вы разобрались можете указать на ошибки? Может автор flames хотел просто сказать что можно выбирать случайно нелинейные функции и пропускать N итераций чтобы в итоге из простых функций получать сложные? А тонкости делайте как хотите.

Описание алгоритма очень сумбурное, похоже собрано в впопыхах из разных расчетов.
Путают в описании то векторы то скаляры...Каша...нет однозначно последовательности что нужно делать.
На википедии вообще другая формула:
https://en.wikipedia.org/wiki/Fractal_flame
Там Wk скаляр, а в тексте в этом месте вектор Vij. И в описании напутано то вектор то скаляр…

Всего трансформаций m=49 с порядковым номером i.
В описании Variations:
Для каждой трансформаций есть свои параметры abcdef.
Значит нужен массив Array0 из n строк и 6 столбцов( по количеству abcdef):
Для определенности n=3 количество выбранных трансформаций из m.
Массив abcdef для расчета Variations.
Код:
Array0=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
}

Например выбираем n=3 всего используемых трансформаций с номером 10,14,20.
Массив номеров трансформаций:
Код:
V={10,14,20}

Нужны веса вариаций массив W длинной n из скаляров от 0 до 1? Тогда:
Код:
W={0.23,0.98,0.16}


Дальше в Post Transforms вдруг появились Alfa, Beta и т.д. это новые abcdef
только для Post Transforms? У них есть индексы i значит еще массив Array1:
Код:
Array1=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
}

==========================
Расчет:
1)Variations
A0(x, y) случайный вектор внутри квадрата в 2д с коорд от -1 до 1:
Для V[J] задать J константой от 1 до n или это рендом?
iterate
{
i = случайное целое 1 to n.
Код:
A0(x, y) =W[i]*V[J]*
(
Array0[i][1]*x+Array0[i][2]*y+Array0[i][3], 
Array0[i][4]*x+Array0[i][5]*y+Array0[i][6]
)

пропустить первые 20 итераций
вернуть A0(x, y)
}
==========================
В описании Post Transforms нет псевдокода, но есть Pi индекс i значит есть случайный
выбор i?
==========================
2)Post Transforms
A0(x, y) от прошлого расчета
iterate
{
i = случайное целое 1 to n.
Код:
A0(x, y) =
(
Array1[i][1]*x+Array1[i][2]*y+Array1[i][3], 
Array1[i][4]*x+Array1[i][5]*y+Array1[i][6]
)

пропустить первые 20 итераций ? Нет псевдокода.
вернуть A0(x, y)
}
==========================

==========================
3)Final Transforms
A0(x, y) от прошлого расчета
iterate
{
i = случайное целое 1 to n.
A0(x, y) = ?? Нет уравнения в тексте. В тексте говорят это некая нелинейная камера, может просто одна из трансформаций?
пропустить первые 20 итераций
вернуть A0(x, y)
}
==========================

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 13:58 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
sergeyivanovich, давайте забьём на Вику; она в этом отношении плохой ресурс. Возьмём оригинальное описание алгоритма. И впредь, пожалуйста, набирайте всё, относящееся к коду, используя теги [tt] и [code]. А то глаза вытекают и читать невозможно.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 15:14 


20/07/17

40
Я про него и говорю. Алгоритмы оттуда. Еще на хабре было описание тоже каша…

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 15:31 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
В голове у вас каша в первую очередь. С какой реализацией алгоритма вы хотите разобраться? С той, что приведена в Вике? С оригинальной, приведённой по моей ссылке полтора часа назад? С какой-то, описанной на Хабре? Так приведите хотя бы ссылку на конкретную статью на Хабре. Вот как выяснится, что именно в какой именно реализации алгоритма вам непонятно, мы попробуем спокойно и неторопливо разобраться.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 20:31 


20/07/17

40
Aritaborian в сообщении #1235147 писал(а):
С оригинальной, приведённой по моей ссылке

Разобраться с оригинальной. На хабре откуда то взяли критерии выбора и пределы для a,b,c,d,e,f.
“такие коэффициенты несложно. При этом надо проверить 3 условия:”
https://habrahabr.ru/post/251537/

Вот как понял:
В расчете доступны 49 нелинейных преобразований. Из них используется N, порядковый номер i храниться в массиве V[i].
-фот 158
Изображение

Uij это вектор от (0,0) до (1,1) или скаляр? Почему два индекса? Может это массив векторов? Т.е. там нужен массив векторов 2 столбца и 20 строк ?
20 это макс итераций наверно это принято j?
Array0[i][j]
Во всех псевдокодах итераций =20 значит max j=20.

Какие брать a,b,c,d,e,f? Где их критерии выбора в тексте? Где пределы выбора? Какой тип переменных? Если у них индексы i то это массив 6 столбцов N строк?
Код:
Array1=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
….
}


-Фот 160
Изображение

Вот тут описаны Альфа, Бета,Гамма… с индексами i.
Значит им тоже нужен массив 6 столбцов N строк?
Код:
Array2=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
….
}



Расчет:
Все эти следующие три пронумерованных шага это одна функция Func(a,b) и входит в пункт 4 Color.
////////////////
3) Variations.
Принять параметры (a,b).
x_old=a
y_old=b
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = Array0[i][j] *V[j]*
(
Array1[i][1]*x_old+Array1[i][2]*y_old+Array1[i][3], 
Array1[i][4]*x_old+Array1[i][5]*y_old+Array1[i][6]
)
x_old=x_new
y_old=y_new
}

Вернуть (x_old, y_old).
////////////////



////////////////
4) Post Transforms
Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) =
(
Array2[i][1]*x_old+Array2[i][2]*y_old+Array2[i][3], 
Array2[i][4]*x_old+Array2[i][5]*y_old+Array2[i][6]
)
x_old=x_new
y_old=y_new
}

Вернуть (x_old, y_old).
////////////////



////////////////
3) расчет Final Transforms
-фот162
Изображение

Кто такая F final? Это просто одна из трансформаций? Где ее уравнение? Вот тут непонятно, по логике нелинейная камера как поясняет автор
-фот 163
Изображение

это наверно нелинейная трансформация без настроек? Или как? Или делайте как хотите?
Т.е. например F final (x, y) это:
(x_new, y_new) =V[j]* (x_old, y_old) ?
Или
(x_new, y_new) = Array0[i][j] *V[j]* (x_old, y_old) ?
Или
Задать отдельно a0,b0,c0,d0,e0,f0. Как их выбрать?
(x_new, y_new) =(a0*x_old+b0*y_old+c0, d0*x_old+e0*y_old+f0 ) ?

Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = ???
x_old=x_new
y_old=y_new
}

Вернуть (x_old, y_old).
////////////////


////////////////
4)Coloring
Массив 4-мерных векторов С[i] флоат длинной N .

(x_old, y_old) = случайный вектор от (-1,-1) до (1,1).
С это цвет RGBA абстрактно одним числом? Все 4 параметра случайны и уникальны.
С=Взять 4 случайных флоат от 0 до 1
Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = Func(x_old, y_old)
x_old=x_new
y_old=y_new
С=(С+Сi)/2          //это 4 мерный вектор
}

Вернуть (x_old, y_old, С).
-фот164
Изображение
Непонятно. Кто такая Cfinal тоже как Ffinal?
////////////////

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 23:09 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
sergeyivanovich, у меня от вашей незамутнённой непосредственности давление скачет до ста семидесяти. А и без этого фигово. Беннингтон повесился, Гребенщиков внезапно матерные песни поёт, подчинённые работать не хотят, домашний питомец помирает...
So.
а) спасибо за ссылку на хабрастатью, но её мы оставим в стороне пока;
б) что в словах
Aritaborian в сообщении #1235114 писал(а):
И впредь, пожалуйста, набирайте всё, относящееся к коду, используя теги [tt] и [code]. А то глаза вытекают и читать невозможно.
вам непонятно? Любой человек, имеющий опыт программирования не в Маткаде, подтвердит, что это не прихоть;
в) если бы мы оба сразу были более внимательными, то заметили бы, что на сайте fam3.com есть не только описание алгоритма, но и ссылки на конкретную его реазизацию, на репозиторий в Гитхабе. Предлагаю разбираться таки с ним; ИМХО, это будет гораздо удобнее, чем тот ПДФ-документ.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение21.07.2017, 23:39 


20/07/17

40
“набирайте всё, относящееся к коду, используя теги”
Это все псевдокод а не код, как и в тексте. Мелкие куски формул пару строк. Выделять их через строку? Смысл?
Aritaborian в сообщении #1235217 писал(а):
ссылки на конкретную его реазизацию

Давно знаю. В исходнике каша из кучи кода мне непонятна. Вникать в нее очень трудно\лень. Я думал пару моментов с текста прояснить в начальной версии 1.0 как простейшей и все сделать самому с нуля + изменить под себя.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение22.07.2017, 00:47 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Спасибо, понял вас.

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение22.07.2017, 08:32 


20/07/17

40
Так что глянете текст прояснить моменты?

-- 22.07.2017, 09:38 --

Главный вопрос был про ”как можно получать такие абстракции как на рис” разными методами.

Может предложите свой метод? Как с вашего уровня математики есть идеи?
Интересует получение абстракций похожих на Symmetric Icon
http://www.fractalsciencekit.com/tutori ... ymicon.htm
Может есть идея как можно получать подобные абстракции? Т.е. некий универсальный алгоритм создания рекурсивных уравнений странных аттракторов. Какие компоненты нужно собрать чтоб получить уравнение странного аттрактора?
Вот похоже один из методов это flames. Еще есть? Вам известны?
Листал порядка 10 книг по аттракторам на RUS\ENG. Повторял из них разные уравнения Symmetric Icon. Вот попробовал вкурить flames текст и ничего… куча недоговорок, хотя общая идея понятна и уверен работать будет. Пока что создал эту тему на 10 форумах толку ноль =).

Наверно проще, элегантней и очевидней метода чем получать сложные функции выбирая из кучи нелинейных не придумать.
Сложное состоит из простого…

 Профиль  
                  
 
 Re: Расчет для абстракций
Сообщение22.07.2017, 09:38 


20/07/17

40
Скачал весь проект с гитхаба и Fail
Как знал:
Изображение
flam3.c 4000 строк…СПС не надо =))
Хотелось бы понять базовый алгоритм из описания.

 Профиль  
                  
 
 Re: Расчет для абстракций [fractal flame]
Сообщение23.07.2017, 00:50 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Недавно натыкался на одну из реализаций на Processing. Почитайте; возм., что-то хорошее оттуда почерпнёте.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group