Context Free Design Grammar by Chris Coyne
От: McSeem2 США http://www.antigrain.com
Дата: 15.07.05 19:08
Оценка: 94 (11)
К вопросу о языках.

Наткнулся на весьма занимательную штуку — язык CFDG: http://chriscoyne.com/cfdg/page6.php
Язык, умеет делать только одно — рисовать. Но как! Соотношение компактность-результат — выше всяких похвал:
http://chriscoyne.com/cfdg/page6.php (картинка 300K).
У меня тоже бродят мысли сочинить подобный язык, но типа более практичный, что ли.
CFDG — это в основном чисто фан. Ну или некий инструмент для очень продвинутых дизайнеров.
Они даже сделали интерактивную софту: http://www.ozonehouse.com/ContextFree/index.html
Проект стартовал в Мае этого года, но уже набрал поклонников:
http://chriscoyne.com/cfdgforums/viewforum.php?f=3 — час сидел игрался с примерами.
Что же я сказать-то хотел?

1. Просьба прокомментировать — интересно ваше мнение. Не надо только подходить с чисто меркантильно-прагматических позиций, типа "нафига оно надо" — это просто интересно и прикольно.

2. Можно поиграться и запостить код сюда — вдруг чего гениальное образуется.

3. Похвастаюсь — внутри используется AGG.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Context Free Design Grammar by Chris Coyne
От: Andir Россия
Дата: 16.07.05 04:32
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>2. Можно поиграться и запостить код сюда — вдруг чего гениальное образуется.


Одно слово: класс!

Не гениальное, но прикольно ...

Спиралька например:

http://www.rsdn.org/File/1938/spiral.png
startshape spiral

rule spiral
{
    CIRCLE { x 0 size 0.5 }
    spiral { y 1 size 0.97 rotate 20}
}


C Уважением, Andir!
Re[2]: Context Free Design Grammar by Chris Coyne
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.07.05 15:00
Оценка: +1
Здравствуйте, Andir, Вы писали:

A>rule spiral

A>{
A> CIRCLE { x 0 size 0.5 }
A> spiral { y 1 size 0.97 rotate 20}
A>}
A>[/code]

Конкретно этот пример до боли похож на один пример из книжки по Лого, предназначенной для обучения программированию детей дошкольного возраста
-- Главное про деструктор копирования не забыть --
Re[3]: Context Free Design Grammar by Chris Coyne
От: Andir Россия
Дата: 17.07.05 01:26
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Конкретно этот пример до боли похож на один пример из книжки по Лого, предназначенной для обучения программированию детей дошкольного возраста


Угу, мне тоже Лого вспомнился когда увидел. Но идея классная!

C Уважением, Andir!
Re: Context Free Design Grammar by Chris Coyne
От: Ka3a4oK  
Дата: 25.07.05 19:32
Оценка:
Это вроде L-системы(черепашья графика) ?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: Context Free Design Grammar by Chris Coyne
От: vdimas Россия  
Дата: 25.07.05 22:11
Оценка: 16 (3)
Здравствуйте, McSeem2, Вы писали:


Ага, что-то типа Лого, так же тянет поиграть...

Вот, наиграл зимний пейзаж (легкая переделка одного из примеров):


startshape SEED

rule SEED {
    SEED1 { x -6 }
    SEED1 { x 0 }
    SEED1 { x 4 }
    SEED1 { x 8 }
}

rule SEED1 {
 SQUARE{}
 SEED1 {y 1.2 size 0.99 rotate 1.5 brightness 0.04}
}

rule SEED1 0.02 {SEED1 {flip 90}}

rule SEED1 0.015 {
 SQUARE{}
 SEED1 {y 1 s 0.99 r 1.5 b -0.5 flip 90}
 SEED1 {y 1 x 0.8 s 0.6 r -60 b -0.5}
 SEED1 {y 1 x -0.8 s 0.5 r 60 b -0.5 flip 90}
}

rule SEED1 0.03 {
 SEED1 {rotate 30}
 SEED1 {rotate -30}
}


http://www.rsdn.org/File/21096/ppp.JPG
Re: Context Free Design Grammar by Chris Coyne
От: Ka3a4oK  
Дата: 26.07.05 16:25
Оценка:
MS>3. Похвастаюсь — внутри используется AGG.

Зачем они GFIPLUS.dll с собой таскают ?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: Context Free Design Grammar by Chris Coyne
От: McSeem2 США http://www.antigrain.com
Дата: 26.07.05 21:46
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

MS>>3. Похвастаюсь — внутри используется AGG.

KK>Зачем они GFIPLUS.dll с собой таскают ?

Изначально было на GDI, потом — на GDI+, очень тормозно и некачественно. Потом переделали на AGG, но от GDI+ видимо так до конца и не отчистили. Подозреваю, что используют для масштабирования изображений. С низким качеством GDI+ масштабирует картинки несколько быстрее.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Context Free Design Grammar by Chris Coyne
От: McSeem2 США http://www.antigrain.com
Дата: 26.07.05 22:00
Оценка:
Они добавили цвет и прозрачность.
http://chriscoyne.com/gallery/
http://www.ozonehouse.com/ContextFree/download.html
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[2]: Context Free Design Grammar by Chris Coyne
От: vdimas Россия  
Дата: 28.07.05 01:42
Оценка: 68 (4)
Здравствуйте, McSeem2, Вы писали:

MS>Они добавили цвет и прозрачность.

MS>http://chriscoyne.com/gallery/
MS>http://www.ozonehouse.com/ContextFree/download.html

еще прикольнее

вот результат цветового эксперимента:

http://chriscoyne.com/gallery/view.php?by=vdimas
http://chriscoyne.com/gallery/uploads//a1/ca/vdimas//full_1122507850.png
startshape plant{color alpha}

rule plant {
    rose { x 2 y 1 b 0.6  sat 1 hue=0 }
    stem {  s 1.2 1.8 x 1.7 y -1.2 }

    rose { x -1 r 180 b 0.6 sat 1}
    stem { flip 90  s 1.2 y -2 }

    leaf { skew 0 -25 r 75 x 0.4 y -2.2 b =0.5 hue =120 sat 0.6 }
    leaf { s 1 0.8  flip 90 r -70 x 1.15 y -1.8 b =0.5 hue =120 sat 0.6 }
}

rule rose {
    rosestart { }
    rosestart { r 60 }
    rosestart { r 120 }
    rosestart { r 180 }
}

rule rosestart {
    petal { s 1.8  }
    rosepart { r -25 s 0.7  }
}

rule rosepart {
    petal { s 2 }
    rosepart { r -25 s 0.9  }
}

rule petal {
    CIRCLE { s 0.9 1.8}
    CIRCLE { s 0.85 1.7 b 0.2   }
    CIRCLE { s 0.8 1.6  b 0.4  }
    petal { r -105 y 0.04 x 0.04 size 0.9 h 0.8 b 0.1  }
}

rule stem { 
    CIRCLE {  b =0.5 hue =120 r -25 s 1 3  sat 0.6 }
    CIRCLE { r -25 x 0.12 y -0.03 s 1 3 b 1 sat -1 }
    SQUARE {  x -0.7 y -1.2 s 0.5 b 1   }  
}

rule leaf {
    SQUARE [s 0.1 0.6 ]
    leafpart { r 5 y 0.8 x -0.05 }
}

rule leafpart {
    CIRCLE { b =0.4 }
    CIRCLE { s 0.9 b 0.6 }
    SQUARE { s 0.1 1 }
    leafpart { r 1.5 y 0.1 s 0.9 }
}
Re[3]: Context Free Design Grammar by Chris Coyne
От: McSeem2 США http://www.antigrain.com
Дата: 28.07.05 07:04
Оценка:
Здравствуйте, vdimas, Вы писали:

V>вот результат цветового эксперимента:


У! Я смотрю, ты свои работы в их галерею добавил — это правильно. А вообще, судя по некоторым изображениям, это почти идеальный инструмент для создания оптических иллюзий.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Context Free Design Grammar by Chris Coyne
От: Lorenzo_LAMAS  
Дата: 28.07.05 18:14
Оценка:
Может глупость спрашиваю, но есть ли у них описание языка?
Of course, the code must be complete enough to compile and link.
Re[2]: Context Free Design Grammar by Chris Coyne
От: McSeem2 США http://www.antigrain.com
Дата: 28.07.05 21:22
Оценка:
L_L>Может глупость спрашиваю, но есть ли у них описание языка?

Ну, там есть ссылка на общую context free gramma в википедии.
http://en.wikipedia.org/wiki/Context_free_grammar

А так, в основном, на примерах:
http://www.ozonehouse.com/ContextFree/about.html


Third, choose lesson from the Examples menu. Read it. Yes, read it, there are lots of comments in the rules. They should explain how rules work.



Но я, например, не понимаю простой вещи — когда и как вся эта "байда" останавливается?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[3]: Context Free Design Grammar by Chris Coyne
От: vdimas Россия  
Дата: 29.07.05 08:06
Оценка: 20 (1)
Здравствуйте, McSeem2, Вы писали:

MS>Но я, например, не понимаю простой вещи — когда и как вся эта "байда" останавливается?


1. Когда size достигает значения < некоего Epsilon. Т.е. в рекурсивных алгоритмах мы вызываем каждый следующий шаг с коеф. при size меньшим 1. Например.
startshape spiral {}

rule spiral {
    CIRCLE {}
    spiral { s .998 y 2 r 4 }
}


http://www.rsdn.org/File/21096/spiral.PNG



2. Если есть множество правил, то текущее применяемое правило выбирается случайным образом. Одно из правил может быть нерекурсивным, тогда на нем алгоритм остановится. Есть возможность задавать вероятность применения правил.

Ниже пример остановки по 2-му варианту. Тут несколько рекурсивных правил tail, но одно из них конечное, задано с маленькой вероятностью.
startshape snake{color}

rule snake {
    head {}
    tail { x .3 s .5 }
}

rule head {
    CIRCLE { b .3 sat .8 h 30 s 1 .6 }
    CIRCLE { x -.1 y .2 s .3 .15 b 1 }
    TRIANGLE { x -.3 y -.2 b 1 s .5 .2 r 45 }
}

// рекурсивные хвосты
rule tail { body {}  tail { x .6 r -6 } }
rule tail { body {}  tail { x .6 r -10 } }
rule tail { body {}  tail { x .6 r -14 } }
rule tail 0.5 { tail { flip 0 } }

// конечный хвостик
rule tail 0.05 {
    TRIANGLE { x .5 r -90 s .9 2 b .3 sat 0.8 h 30 }
}

rule body {
    SQUARE { x .3 b 0.8 s .6 .9 sat 1 h 60 }
    TRIANGLE { y -.15  s .3 1 b .3 sat 0.5  }
    TRIANGLE { r 180  x .3 y .15 s .3 1 b .5 sat 0.8 h 200}
}


Каждый раз получаем змейку произвольной длины и формы, вот примерно средний вариант:

http://www.rsdn.org/File/21096/snake.PNG
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.