L-система. Создание фракталов. (Python)
HTML-код
- Опубликовано: 3 окт 2020
- Стал осваивать язык Python.
Для этого нужно было начать какой то проект и я решил сделать проект по L-system.
Из Википедии:
"L-системы предложил и развивал в 1968 Аристид Линденмайер, венгерский биолог и ботаник из Утрехтского университета. Линденмайер использовал L-системы для описания поведения клеток растений и моделирования процесса развития растения. L-системы использовались также для моделирования морфологии различных организмов и могут быть использованы для генерации самоподобных фракталов, таких как системы итерируемых функций."
В этом ролике разбор простейших L-систем и создание фракталов.
Архив с моим кодом (Python)
yadi.sk/d/pnNg7dyJ1Mha9Q
Книги:
yadi.sk/d/_hDV-ndgv78g5A
Repl.it
repl.it/@foo52ru/sierpinski-t...
repl.it/@foo52ru/sierpinski-t...
repl.it/@foo52ru/fooLine
repl.it/@foo52ru/dragon
Выражаю благодарность тем, кто поддерживает меня финансами.
Реквизиты для финансовой поддержки можно найти в
/ foo52ru Наука
Ждём естественный отбор таких деревьев)
Согласен
+ наследственность и изменчивость, помещаем в разнообразные условия и генерим люцифера
Это уже биоинформатика
А пока - проходим естественный отбор тех, кто всё понял! D:
0:58 чисто описал мой путь программиста: "я нашёл кучу книг по этой теме, но пока ещё из не читал"😂
Я так вообще в смежную область ускакал ахахах
нашёл кучу печной арматуры, но по итогу в построенной печи применил только дверки и плиту :)
Как же это круто, особенно то, что ты последовательно объясняешь, спасибо)
А как вы изучаете питон? Было бы интересно и это узнать. Сам недавно начал его изучать.
@@caftanfire7597 www.coursera.org/learn/python-osnovy-programmirovaniya , начал с этого, в данный момент до сих пор изучаю
@@caftanfire7597 для питона много прекрасных книг написано, как по мне это лучший способ его изучать
Как всегда - дико интересно, доступно, понятно. Спасибо!
Ролик как всегда на высоте, юмор топ, ты единственный ютюбер, все видео которого я смотрел несколько раз)
Очень толковый ролик, интересно наблюдать как из простых правил рождается довольно сложные структуры. Автор вы молодец!
То чувство когда пишешь комментарий не для того чтобы написать что-то интересное , а потому что знаешь что каждый комментарий продвинет это видео в топы.
Браво! Спасибо за ваши видео!
Как всегда - лучший! Очень нравятся твои видео, жду с нетерпением вторую часть)
P.s. Было бы интересно смоделировать это "расстения" в трёх мерной симуляции
Как всегда, очень классно!
Это, блин, интересно само по себе. Без проги, без алгоритмов, без биологии и матана. Ай как хорошо! Ай молодец!
А представляешь, как круто, когда ты сам это запрограммировал и оно работает!
Треугольник Серпинского рисуется одной командой. Есть три точки-вершины треугольника А, В, С. Точка Х - текущая точка.
Х = (Х + random(A,B,C)) / 2
Чем больше итераций, тем чётче проявится фигура.
Сложное в простом. Супер, ждем новых видео!
Ура, наконец ты начал использовать этот чудесный язык, надеюсь, твоё последующее использование его будет удобным)
новый рэп от foo52ru: 11:50
Грррррря!
Круто. Продолжение ждёмс
Напишу, чтобы видос в топе был. Ты красава
Спасибо как всегда очень интересно
Есть под андроид неплохая программа «L-System Studio».
Вдруг кому-то захочется попробовать, не заморачиваясь с программированием.
А ролик - как всегда. Комментарии излишни. 👍
А вот мне наоборот хочется позаморачиваться.
Ну, скажем так. Для побаловаться сойдёт. Но вот солиды тут особо не поделаешь, только если из толстых линий. И кастомных команд нет.
@@user-mr1so9tu1r шо за хастомных?
@@YaShoom команды по типу движения не на полную длину или поворот на другой угол. Те же солиды так же отсутствуют.
Очень круто и интересно))
Очень интересно!
О, спасибо за видео
Видео в топы. Фрактальную графку в реальное применение
Ух ты. Вы вспомнили мой комментарий к первому видео про цифровых деревьев)))) спасибо.
Класно. Время пролетела как дракон серпинского.
В конце четкое "ОПА-НА" ахаха.
Чесно говоряс первого взгляда система сложная, но интересная. Сложная в плане не понимания как это устроено, а в плане практического примименния и создания собственных таких L-Systeм.
За видео спасибо! Познавательно !
Вот это огонь!
Комментарий для поднятия видоса в топы
Спасибо большое :)
Класс! Продолжай)))
Ждём следующее видео!
Круто! Ждем деревья!
Конец особенно крут
Осталось засунуть аксиому и формулы в геном и запустить генетический алгоритм!
Не, там основное будет - заполнение листьями площади - это основная плюшка для выживания. А мутации будут корёжить дерево и этой плюшки лишать. Уже не могу дождаться, чтобы увидеть батл деревьев!
Отличный ролик!!!
Я однажды год-два назад нашла на ютубе видео «как рисовать фракталлы в пэйнте». Там было показано несколько, но без указания названий. Один из них я назвала «фракталл в форме почки». Сейчас я внимательно несколько раз пересмотрела это видео, затем нарисовала в пэинте небольшой кусочек этого фракталла (6 итераций), досконально проанализировала и выписала его форму на каждой итерации, затем составила для него такую L систему: "f":"f+fx", "x":"-", "-":"-", "+":"" (да, + превращается в ничто). F - отрезок, + и - - повороты на 90⁰ вправо и влево соответственно. У меня сейчас очень сильный душевный подъём по поводу того, что я сама смогла до этого додуматься. Спасибо, Техношаман, что помог разобраться в теме!
Если вдруг кто знает название фракталла - напишите плиз :)
Оч круто!
Агонь!
Интересный видосик ☺️
Молодец парень, я тоже с растений фракталы изучал. Сейчас на топологию поверхностей занесло. Обязательно для прочтения Бенуа Мандельброт - изобретатель фракталов, у него замечательная книга. Также потрясающе практичное руководство есть у студии Лукаса, от создателей спецэффектов "Звездных войн", они первые начали применять фракталы в CGI.
Ничего не шарю в программировании, но подписан, т.к. впечатляет, удачи в развитии)
Изучай js для начала
@@misterbebra2460 js-jawa scripts?
@@sporeminecraftsupraland5765 java script
ШИкарный контент, я абсолютный ноль в данных темах, но так интересно смотреть)
О да, я давно этого ждал, фракталы для деревьев!
Блин! Круто)) только изучаю пито и тут на такое наткунлся) Просто сладости)))
Жду про деревья :)
Ееее, теперь могу создать свои виды деревьев в Minetest!
Молодец
Ура! ТехноШаман добрался до Python и Jupyter Notebook.
Кстати попробуй Google Colaboratory или просто Google Colab - это такая же среда и редактор как Jupyter Notebook со своей виртуальной машиной, в нем установлены все библиотеки как в Anaconda и кое что ещё от Google
Кроме словаря замен можно так же сделать словарь команд. Тогда можно будет основной код абстрагировать и вынести. А частные случаи тогда будут создаваться исключительно через два словаря.
Сегодня вот такой вариант предложили в чате.
В качестве значений в словаре идут ссылки на функции.
Чувствую, меня ещё много открытий ждёт :)
def a():
print(1)
def b():
print(2)
dic = { 'x':a, 'y':b }
for ch in 'xxyyxyxy':
dic[ch]()
@@foo52ru зачем ссылки? наверняка анонимные функции туда тоже записать можно (во всяком случае в яваскрипте или перле 100% можно).
p.s. Вот вариант с лямбдами - в питоне тоже можно :-)
simonwillison.net/2004/May/7/switch/
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
Классно, нужно в C сделать)
продвигаю в топ
+1 коммент. лайк за python
А вот с python это круто. Хочется повторять эксперименты. =)))
Я рад что ты начал изучать питон , а не pixilang .
Спасибо за видео. Моё мнение- видео про деревья полезно периодически разбавлять освежая видеозаписями подобными этой, или любой другой из Ваших вроде космической механики, нейросетей, змеек и т.п. А то несколько видео подряд про одну и туже тему немного затягивают тему. В любом случае спасибо за Вашу работу.
Нейронки по видео идеально работают.
Ты будешь лучшим it блогером ютуба.
Комментарий для продвижения ролика на Ютубе)
Урааа, я буду понимать код! (знаю только python)
Комментарий для продвижения видео
Спасибо!
Тоже не могу полюбить Юпитер, но это, кажется лучший вариант, когда надо работать с чем-то, что требует визуализации, на сервере учреждения, например. Подключаешься по SSH - и работаешь как будто у себя на компьютере. Не скачивать же каждый график, чтобы посмотреть, что там получилось.
Кстати на счёт треугольника Серпинского. Его можно построить просто случайно ставя точки по определённому правилу: выбираем рандомным вершину треугольника, и ставим точку на полпути к нему, вообще было бы интересно послушать о других таких фракталах и фигурах, которые строятся по правилу с частицей рандома.
"Игра в хаос", так же можно рисовать и ковёр, только точек надо определить восемь и точки ставятся на трети пути к ним.
@@simsingular3686 Ага. Предельно простая, но забавная штука. Я даже в Экселе как-то на досуге сделал:
ruclips.net/video/zJgYnz4vfdw/видео.html
там в описании видео есть ссылка на файл-исходник.
треугольник вообще очень прост, его можно получить при помощи xor битовых строк:
#include
#include
#include
#include
#include
void SaveBMP(char* file, void* data, int w, int h) {
FILE *f; unsigned long hdr[15]={0x3E+w*h, 0x00, 0x3E, 0x28, w*8, h,
0x00010001, 0, 0, 0, 0, 0, 0, -1, 0
};
f=fopen(file,"wb"); if (!f) {
printf("Unable to create layout file - '%s' !", file);
exit(2);
}
fwrite("BM", 2, 1, f); fwrite(hdr, sizeof(hdr), 1, f);
fwrite(data,w*h,1,f); fclose(f); if (ferror(f)) {
printf("Error creating layout file !
"); exit(2);
}
}
void MakeSC(unsigned char* m, int w, int h) {
unsigned char *p, *pp; for (p=m+w*h-1, pp=p-w; p>pp; *p-- = 0);
for(p[w/2+1] = 1
Также советую прочитать и следовать pep8
processing.org/books/
Прочитал недавно на Хабре начало статьи с похожей тематикой, но только во вселенском масштабе. Может кому будет интересно разобраться. "Стивен Вольфрам: кажется , мы близки к пониманию фундаментальной теории физики, и она прекрасна".
Вольфрам фрик (хоть и не бесталанный).
ну слава создателю!! наконец-то ты до ПИТОНА дорос!! ))))))))))))))))) ну теперь самое интересное только начинается
Найти нужную библиотеку на быстром языке?
🌿
Комментарий для продвижения
Эмм, капец я опоздал, но главное что посмотрю)
7:20 Строки:
axiom = axmTemp
axmTemp = ""
можно заменить на:
axiom, axmTemp = axmTemp, ""
Так еще "питонистее" будет.
Мой вариант тут: github.com/LexxXell/fractals/blob/master/L-system.py
питонистее... но может быть скорость исполнения несколько ниже
@@encoder10101 возможно незначительно замедление на этапе компиляции байт-кода, но это будет фактически незаметно.
@@LexxXell но так ведь хуже читается
@@Splish_Splash для питониста это очивидное и привычное написание, таким образом это не должно вызывать у него затруднений при чтении кода.
@@LexxXell очевидное, но в целом я бы предпочел вид двух переменных на разных строках, читаемость будет лучше
после ковра Серпинского надеялся увидеть губку Менгера. Спасибо за видео!
Советую писать Python код в текстовом редакторе Sobline Text(вроде бы правильно написал) , тогда на код будет приятнее смотреть , а после написания файл запускается через cmd
*Sublime
12:26 в трёхмерном пространстве подобная фигура называется "Губка Менгера"
Хорошо, что стали использовать Python.
Язык домохозяек?
Всего шаг до 1С! :P
@@wugu42 @DRFR я вижу вы сами наверное на асемблере свои проги пишите. Почему такая ненависть к питоше?
@@arturgals2731 Да бросьте! Я бесконечно далек от того, чтобы испытывать ненависть к языкам программирования (да, даже к 1С!).
Это шутка была. Если кого задел за живое - простите, цели такой не ставил.
Про TAB и Shift+TAB. Это от IDE зависит. Вообще в любом адекватном редакторе таб все выделенные строки смещает на один отступ. А отступ уже или таб или сколько-то пробелов - в любом случае не важно.
Jupyther Notebook он скорее для машинистов. Для проектов с несколькими фалами лучше PyCharm
Я за несколько дней, неожиданно для себя, поработал в нескольких средах. :)
PyCharm установил, но пока не использовал.
Jupyther Notebook понравился концепцией.
Наконец-то питон, добро пожаловать
Спасибо за ролик и повод вернуться в Питон. Этой весной изучал его по учебнику одного профессора из Америки. Решил написать монополию, но к сожалению не хватило сил сделать до конца. Работал в IDLE.
Чувак, idle дно. Юзай всё что угодно кроме него.
Классные фракталовые антенны 🏆😄👍 на какой рутер то ставить ?
Также, если речь идёт об удобном написании, отладке кода и прочих классных вещах, то для python советую VSCode, не нуждается в мощном ПК, бесплатен, полностью настраиваем, имеет классный отладчик, множество пользовательских расширений и тд. В общем, советую.
Спустя полгода фрактальный интеллект захватил мир...
11:50 - момент, когда я выпал из реальности
Интересное совпадение! =) Месяц назад я тоже выпустил видеоролик про Л-системы на Python xD
ruclips.net/video/NZC5GiNle4Q/видео.html
обожаю фракталы!
Интересное совпадение 2 месяца назад наткнулся на статью по L-системам и закодил их на python почти так же как автор xD
Помним)))
Иногда просто слушаю голос, не вникая. Успокаивает.
Здравствуйте, спасибо вам за ваши ролики и ваш труд! Вы вдохновили совершенно далёкую от программирования девицу 30 лет (ННГАСУ Искусство Интерьера) решиться освоить новую для неё науку data science. Начала учить питон и сеголня по наитию зашла к вам. За знаниями и удовольствием. И как вовремя. Как по заказу ролик по питону. Праздник какой-то! Возможно, вы посоветует какие-либо учебники, уроки, стати и тп по питону, ( статьи из Википедии, официальный сайт и форум уже в разработке), а возможно и по мат анализу, мат статистике, теории вероятностей и даже линейной алгебре. Возможно, вы подскажете, где их лучше поискать в Нижнем?
я вот это всё кодил на С по книгам Л. Аммерал про компьютерную графику и 3Д (4 тома) в 1992 году на 286 компе ..боже сколько лет утекло )))
Почему не Фортран?
@@darkfrei2 я кодить начал в 1989 году в 9 лет )) и уже тогда НИКТО на фортране не кодил. Он в то время уже был мёртвый язык в моём окружении.. даже кодеры, работающие на задачи учёных и исследователей форт не юзали в то время.. ну как-то так. А я то вообще не застал форта )) начал сразу с асма.. потом ц/цпп и в универе в 1997 году ПАСКАЛЬ.. 😂
А что касается про 4-х томник и форт, так у Аммерала все примеры на С, не буду же я назло маме уши отмораживать 😂😂👍
@@user-kg9qk8rt1e форт - это совершенно другой язык, не стоит так фортран сокращать :-) я фортран застал лишь "краешком", он был встроенным и весьма развитым компилятором в рафос (но писал я на макро-11 и паскале).
В универе изучали. Даже автомат получил за программы, но нифига в памяти не отложилось назначение фракталов.
Пришел посмотреть видео про "L-системы" - выучил библиотеку "turtle")
Опа-на :)
Комментарий продвижения
топ
Точно так же генерируются деревья в 3д редакторе bryce
Ухты, природные алгоритмы?)
Опана...
Чувак научи меня как стать богатым. Верю, что ты можешь найти алгоритм)
делать десятки и сотни людей бедными
@@MechanicalCoreSystems фак(
@@MechanicalCoreSystems сделаю, только как?
@@folladamamavibora1595 попробую, спасибо
Follada Mamá Víbora для беспринципных проституция самое оно ;)
Ну вот, теперь опять ждать новое видео...
Совет: не используй range(len()) для итерации по списку, лучше enumerate.
В таком случае, меняем
```
ln = len(axiom)
for i in range(ln):
axiom[i]
```
На
```
for i, value in enumerate(axiom):
value
```
Неудержался и сделал еще более "питонистый" вариант. Применение правил в две строки, более гибкие настройки L-системы, настроен экран черепашки.. В текущем варианте рисует "фантазии" на тему треугольника Серпинского. github.com/LexxXell/fractals/blob/master/L-system_v2_1.py
Для фрактала "Дракон" заменить # l-system settings на:
axiom = "XY"
gens = 13
angle = 90
step = 2
rules = {
"+":"+",
"-":"-",
"X":"X+YF+",
"Y":"-FX-Y",
"F":"F"
}
Медитирую над строчкой: axiom = ''.join([rules[chr] for chr in axiom])
@@foo52ru могу проконсультировать или помочь с идеями. Телеграм @lexxxell
@@foo52ru ничего военного, это "list comprehension" взято из функциональных языков семейства ML (haskell и т.п.)
13:24 насяйника, у нас там кривая дракона пугает мирная житель
Интересно, а можно ли расширить Л-систему так, что бы можно было квадрат разрезать на мелкие квадраты 10:39
Отличное видео. Напомнило статью на хабре про фундаментальные законы физики m.habr.com/ru/post/518206/
кто знает, что за генератор речи использовался для
озвучки этого видео?