Немного о красоте T-фракталов


    В 1977 году Бенуа Мандельброт написал книгу «Фрактальная геометрия природы». В ней он подробно описал, как, руководствуясь простыми правилами, нарисовать сложный и красивый самоподобный узор. И до Мандельброта, и после, и по сей день фрактальные узоры привлекают к себе внимание математиков, программистов, художников и прочих любителей красоты.

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





    Семейство фракталов, описанное здесь, не имеет собственного названия, но выросло оно из T-квадрата. Постоить Т-квадрат очень просто, пользуясь принципами наложения слоев, описанными в статье про цикад. Мы берем маленький квадратик, вот такой, только меньше, 4px*4px размерами, и замощаем им плоскость. Обратите внимание — граничные пиксели квадратика — прозрачны. Тот, кто читал статью про принцип цикад, сразу поймет, зачем это нужно.
    Затем мы увеличиваем квадрат в четыре раза — по два на сторону — и замощаем плоскость еще разок. Повторяем. Повторяем. Через несколько итераций квадраты станут большими — а их взаимное наложение друг на друга образует фрактал.

    А что, если взять не такой квадратик-паттерн , а такой ?
    И сделать видимые пиксели полупрозрачными, что бы слои просвечивали друг через друга?

    А вот что.



    А с другим паттерном (сможете догадаться, каким?) результат окажется такой:



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

    Думаю, вам интересно будет самим задать пару фракталов. Не обрушьте мне сервер!

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

    Ну вот, теперь извиняться не только за минимализм, но и дурной код. Все написано на php, и вам потребуется gc для обработки картинок — думаю, он у вас уже есть.

    Откройте свой красивый фрактал!

    P.S. Картинка в начале сделана так.

    P.P.S. kumankov добавил в черно-белые картинки немного цвета.
    Поделиться публикацией
    Комментарии 52
      +2
      Восхитительно!
        0
        Прекрасно!
          +4
          Надо QR-code на фракталах нарисовать.
            0
            У меня одного на втором фрактале конкретно мерцает изображение?
              +4
              Оно так подгружается у вас. Там много слоев и мне кажется, что chrome грузит их быстрее, чем прочие браузеры.
              +1
              Красота, много паттернов перепробовал.

              Из пожеланий:
              • Хорошо бы сделать кнопку «очистить», а то приходится переключаться в режим 1 клетка, а потом обратно в 10.
              • Экспорт в картинку — это возможно?
              • Баг: если не поставить галок, выпадает листинг директорий. Кстати, с помощью вашего квадрата в сосдней папке можно подобрать инвайт на хабру? :)

                +1
                Это не баг, это я случайно убил файл, пока вы смотрели. Извините за неудобство)
                  0
                  А зачем нужна кнопка «отчистить»? Можно просто поменять паттерн. Вам нравится черный пустой фон? :)
                    +3
                    Когда поставил 80/100 галок в режиме 10х10, хорошо бы их убрать все разом. Я только про галочки :)
                  +1
                  Напомнило background в Марио
                  (мне не разрешали играть на цветном ТВ, играл на ч/б)

                  Спасибо!
                    +3
                    А мне некоторые крепости в Dwarf Fortress.
                    +5
                    • НЛО прилетело и опубликовало эту надпись здесь
                        +1
                        а можно сделать генератор статичных страниц и картинок, которые и выдавать )
                        +2
                        Бага: при заполнении шаблона 17х17 у меня обрезались последние 7 строк.
                          +1
                          Окей, спасибо за минусы, вот детальный багрепорт:

                          0. Win 7 Pro SP1, Chrome 19.0.1084.52 m
                          1. Выбираем шаблон 17x17
                          2. Заполняем полностью первые 6 строк чекбоксов + ещё немного в оставшихся
                          3. Нажимаем «сделать»

                          Ожидаемый результат: получить фрактал под наш шаблон
                          Реальный результат: остаются заполненными только первые 116 чекбоксов, остальные обнуляются, картинка строится для обрезанного шаблона

                            +1
                            Ещё одна проблема на той же конфигурации,

                            нижние 2 строки квадрата 11х11 вместо ожидаемого горизонтального рисунка дают чёрный лист. Похоже, что 10 и 11 строки дропаются.
                          +3
                            0
                            Да, оч красиво.
                            +1
                            +1
                            Вариант, напоминающий текстуру ткани
                              +1
                              Сначала подумал, что по ссылке что-то вроде такого, а оказалось куда как интереснее.
                              +1
                              Прекрасно, просто прекрасно. Напомнило клеточные автоматы Вольфрама, из New Kind of Science.
                                0
                                Кстати, отличная лекция!
                                +1
                                Просто фантастика :) Спасибо!
                                  +3
                                  еще вот так можно :)

                                    0
                                    конечно же никуда без народного творчества
                                  +2
                                  А тут получается обман зрения (линии не параллельны)
                                  +8
                                  Добавляем три строчки и Вуаля! :)
                                    0
                                    Ух! Как вы это сделали? Я пробовал экспериментировать с цветами, но выходило всегда некрасиво.
                                      +2
                                      Да там ерунда — после 89 строчки добавить:

                                      $color['r'] = rand(50, 230);
                                      $color['g'] = rand(50, 230);
                                      $color['b'] = rand(50, 230);
                                      

                                      Ограничил диапазон, чтобы слишком ярких цветов не было.
                                        0
                                        Затягивает процесс, там второй тайм начался, а я в крестики-нолики тут играю :)
                                          +4
                                        0
                                        Ковры на заднем фоне форевер ;-)
                                        0
                                          +4
                                          Можно обои печатать и клеить :)
                                            +1
                                            celen.me/gadjet/fractal/?c=10&m0-1=1&m0-3=1&m0-4=1&m1-0=1&m1-2=1&m1-4=1&m2-0=1&m3-0=1&m3-2=1&m3-4=1&m4-3=1 а это мне детство напоминает, мою приставка… Автору спасибо, интересная статья.
                                              0
                                              log(3)/log(2)=1.5849!
                                                0
                                                Круто. Возникла мысль — что если сделать эту картинку динамической? Например, можно принять поле паттерна за поле игры «Жизнь» и порождать новый паттерн по её правилам. Хотя на таком маленьком поле большинства фигур будут жить очень недолго…
                                                  +2
                                                  Тоже сразу подумал про «жизнь» и самый красивый флаер получился вот так.
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    +1
                                                    Где можно заказать такую кафельную плитку
                                                      0
                                                        0
                                                        Читая о децентрализованной и анонимной сети (вроде Tor-а), о принципах возможного построения такой сети, не раз наталкивался на упоминание фракталов как предполагаемого решения обоих задач (децентрализации и анонимизации). Очень интересные решения вырисовываются. Однако целостной картины пока нигде не встречал. так-что если кто в теме, буду благодарен за ссылки.
                                                          0
                                                          Все, пол дня убито на фракталы. Демоничненько
                                                            0
                                                            И текстуры нехилые получаются.

                                                            Кстати, если расфокусировать зрение, то, как я их назвал, «артефакты» в виде квадратов «исчезают» и можно ещё немножко покайфовать образами.

                                                            И да, а если тип смешивания поменять?

                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                            Самое читаемое