Автор Тема: Context Free Art  (Прочитано 9207 раз)

0 Пользователей и 1 Гость просматривают эту тему.

08 Февраль 2011, 00:19:06
Прочитано 9207 раз

scrptn

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

См. галлерею, а вот всего лишь три работы, которые я выбрал при беглом осмотре:







Это так круто, что даже трудно поверить.

08 Февраль 2011, 01:06:22
Ответ #1

scrptn







awesome...

08 Февраль 2011, 15:32:58
Ответ #2

scrptn

Немного подробностей.

"Context free" = "контекстно-свободный". Дело в том, что в теории формальных языков выделяют несколько видов грамматик (см. Иерархия Хомского). Контекстно-свободные грамматики - это такой вид грамматик, где символы (абстрактные, не обязательно только буквы/цифры) имеют одно и то же значение независимо от контекста, т.е. окружающих символов. Именно контекстно-свободные грамматики лежат в основе большинства языков программирования (но не всех и не всегда).

Язык, используемый в Context free представляет собой набор правил, называемый грамматикой.

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

Язык содержит несколько простых примитивов, средства для работы с цветом, механизм повторения узора (tiling, плитка), масштабирования/вращения/скоса фигур (см. Афинные преобразования), средства рисования кривых (отрезки, кривые Безье) и заливки цветом. В общем, стандартный для процедурной графики набор.

Характеристики языка:
  • декларативный на уровне правил: описывается желаемый результат (набор правил типа "цветок - это шесть лепестков с такими-то параметрами"), а не способ его получения.
  • императивный на уровне рисования кривых: описывается способ рисования кривой (глаголами типа "передвинуть", "нарисовать" и т.п.)
  • поддержка модульности посредством директивы include - отдельные правила можно помещать в отдельные файлы для повторного использования
  • поддержка рекурсии (во-видимому, бесконечной) и циклов
  • стандартный набор арифметических/тригонометрических операций, по-видимому, нерасширяем
Для полноценного использования языка необходимо знать:
В общем, язык не самый сложный, но довольно интересный. Как можно видеть выше, результат в большей степени ограничен фантазией, чем возможностями контекстно-свободной грамматики.

08 Февраль 2011, 22:29:52
Ответ #3

Party

  • F4A Specialist

  • Оффлайн
  • ****

  • 12582
  • Карма:
  • Лайков: 0
  • 31
  • Пол
    Женский

    Женский
    • Просмотр профиля
Очень красиво. Почему-то мне больше всего понравилась эта черная "растекающаяся" площадка.







Ассоциативное искусство.

А сколько фракталов!


Группы:
Facebook,
vKontakte

08 Февраль 2011, 22:41:51
Ответ #4

scrptn

[quote name='Party' post='511481']А сколько фракталов![/quote] Собственно, фракталами можно назвать все, что ты прикрепила к сообщению, но тут есть проблема:

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

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

08 Февраль 2011, 23:31:46
Ответ #5

Party

  • F4A Specialist

  • Оффлайн
  • ****

  • 12582
  • Карма:
  • Лайков: 0
  • 31
  • Пол
    Женский

    Женский
    • Просмотр профиля
Собственно, фракталами можно назвать все, что ты прикрепила к сообщению, но тут есть проблема:

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

Группы:
Facebook,
vKontakte

08 Февраль 2011, 23:47:17
Ответ #6

scrptn

[member="Party"], кажется, ты отождествляешь фракталы с множествами Мандельброта/Жулиа. А это только один из примеров, видов фракталов очень много.

09 Февраль 2011, 02:05:46
Ответ #7

Party

  • F4A Specialist

  • Оффлайн
  • ****

  • 12582
  • Карма:
  • Лайков: 0
  • 31
  • Пол
    Женский

    Женский
    • Просмотр профиля
Я не уверена, но по-моему ты мне только про эту модель рассказывал. Или я что-то забыла.

Группы:
Facebook,
vKontakte

01 Май 2011, 17:27:05
Ответ #8

scrptn

Первый эксперимент:



startshape Flower

background { h 280 sat .3 b -.85 }

size { s 5 x -.5 y .5 }

rule Flower {
  5 * { r (360/5) y -.8 }
    RedPetal {}
  5 * { r (360/5) y -.8 }
    WhitePetal { x .53 y -.3 r 45 }
}

rule RedPetal {
  10 * { s .7 b .15 y -.05 z .1 } {
    32 * { r -8 x .03}
      CIRCLE { s 1.2 h 0 sat 1 b .3 z 0 }
  }
}

rule WhitePetal {
  15 * { x .1 y .002 r 15 s .8 sat .05 } {
    CIRCLE { s .05 z 1
             h 0 sat 0 b 1 }
  }
  WhitePetal { s .8 y .09 r -5 }
}

01 Май 2011, 19:09:52
Ответ #9

scrptn



Зависимость есть.

startshape ColoredSquares

rule ColoredSquares {
  10 * { x 1 } {
    10 * { y 1 } S {}
  }
}

rule S {
  SQUARE { h 87 sat .50 b .25 }
  S { s .2 }
}

rule S {
  SQUARE { h 200 sat .50 b .75 }
  S { s .2 }
}

rule S {
  SQUARE { h 22 sat .75 b 1 }
  S { s .2 }
}