Tentacoli

Indice

Una coda – Coda curva – Coda ondulata – Tentacoli – Tentacoli a colori – …


Iniziamo con un cerchio

Una coda può essere disegnata come una sequenza di cerchi, con la dimensione e la distanza tra essi ridotte al 90% ad ogni passo

L’ascissa è costante, l’ordinata e la dimensione cambiano

La posizione del cerchio cambia sia come ascissa che come ordinata

Si ottiene un risultato migliore se si diminuisce la distanza tra i cerchi


La coda cambia direzione di 15° a ogni passo

Se l’angolo è -15° (negativo) la coda si sposta verso il basso

Con l’angolo di 45° si ottiene un risultato interessante


Se una regola viene definita due volte allora verrà applicata l’una o l’altra in modo casuale

Le due regole si differenziano per la y e ogni esecuzione realizzerà una nuova coda

Il numero dopo il nome della regola CODA indica la probabilità che essa sia utilizzata.
La direzione verso il basso è favorita 8 volte su 10


Una figura può essere richiamata più volte per formarne una nuova, cambiando la posizione

Cambiando ascissa e ordinata di ogni figura si può realizzare uno schema preciso

Cambiando l’angolo della singola figura si dispongono in modo più naturale…

Per realizzare otto tentacoli utilizziamo due volte la figura con quattro tentacoli (la seconda chiamata prevede delle modifiche…)

Otto tentacoli centrali con caratteristiche appropriate per xrotatesize


Un colore piuttosto che nero!

Ad ogni chiamata la regola CODA disegna due cerchi, il secondo è più piccolo e più chiaro. Si distinguono le ventose…

Ad ogni chiamata la luminosità è incrementata di 0.1 mentre hue e saturation rimangono costanti

Ad ogni chiamata la saturazione è incrementata di 0.1 mentre hue e brightness rimangono costanti

Ad ogni chiamata la tonalità è incrementata di 5 mentre saturation e brightness rimangono costanti

Ad ogni chiamata la trasparenza aumenta di 0.1 (parte da 1 e diminuisce…)

Cambiando tutto…

Spirali

Indice

Spirale di quadrati – Spirale di più quadrati – Spirale di cerchi – …


Una spirale di quadrati


A ogni passo i quadrati ruotano di 45°, si riducono di dimensione e diventano più chiari


A colori


Il parametro hue aumenta di 30 a ogni passo


Con due bracci


A ogni passo si ruota di circa 180°


Con quattro bracci


Si ruota di circa 90°…


Un effetto molto interessante…


Per disegnare solo il contorno si disegnano due quadrati

 


E così via…


Cambiando a piacere i parametri rotate, size e brightness si ottengono immagini interessanti


Una spirale di cerchi colorati

Quattro spirali intrecciate

 

Alberi

Indice

Albero – Albero 180° – Albero di triangoli – Albero di quadrati – …


Il classico albero frattale con angolo di 90° tra i rami


I rami si allungano molto, size 1 20, e si aprono con angolo +90° o -90°


Un triangolo simula la crescita naturale dei rami

Il triangolo di base è molto appuntito: size 1 10


Anche dei quadrati possono imitare una pianta


Esempi ufficiali

Elaborazioni leggere degli esempi ufficiali


Indice


Le figure primitive SQUARE, CIRCLE e TRIANGLE con l’uso dei parametri xysizebrightness e rotate


Ancora le figure primitive con l’uso dei parametri principali

Il gruppo di immagini a destra è ruotato di 30° e ridotto al 25%


La ricorsione permette di creare una spirale.

Ad ogni passo il cerchio si sposta verso l’alto del 25% ruotando di 3° e riducendo la dimensione del 0.3%.

Se il cerchio non viene disegnato al 50% l’immagine finale risulta più densa pur mantenendo la stessa struttura


La stessa regola definita più volte introduce la casualità.

La regola ALBERO realizza un albero diverso per ognuna delle sue chiamate.
L’albero cresce verso l’alto ma una volta su 16 può generare un ramo destro e un ramo sinistro.
I rami, a loro volta, possono generare un sottoalbero ruotato di 20° o di 30° o di 40° oppure terminare la generazione.


Per disegnare un cuore si utilizza più volte una curva di base

La curva subisce traslazioni, riduzioni, rotazioni, ribaltamenti.

Ci sono diversi accorgimenti per ottenere il risultato finale

flip 90 permette di creare un immagine speculare rispetto all’asse di 90° specificato
include i_curves.cfdg permette di utilizzare la regola curveright_0.99_1 contenuta nel file i_curves.cfdg
size 1.2 1 cambia le proporzioni dell’immagine a favore dell’asse orizzontale.

Sintassi di base

Indice


In breve


Commento multilinea

commenti singola linea

disegna un cerchio

disegna un quadrato

disegna un triangolo (equilatero)

trasla verso destra

trasla verso l’alto

ruota del numero di gradi specificato

ribalta rispetto all’asse specificato con un angolo

stira rispetto agli assi, 0..+/-90, 0..+/-90

tonalità, colore, 0..360

brillantezza, 0..1

saturarazione, 0..1

trasparenza, 0..1

colore sfondo

direttiva di inclusione (senza parentesi angolari…)


startshape


Con la direttiva startshape si indica a CFDG quale regola deve essere utilizzata per prima nella generazione dell’immagine. È obbligatoria.

Quindi in presenza delle regole REGOLAA, REGOLAB, …, REGOLAX, …, REGOLAZ, la prima ad essere eseguita sarà REGOLAX perché specificata dalla direttiva startshape.


background


Con la direttiva background si specifica il colore dello sfondo per l’immagine. È facoltativa.

La forma più complessa prevede tutti i parametri per il colore

Altrimenti sono applicati i valori di default che producono bianco opaco.

Alcuni valori sono di uso più frequente


Coordinate colore


Il colore di un’immagine dipende da 4 parametri secondo il sistema HSBA

  • hue, [0, 360)
  • saturation, [0, 1] [-1, +1]
  • brightness, [0, 1] [-1, +1]
  • alpha, [0, 1] [-1, +1]

Per hue il valore specificato viene aggiunto mentre per gli altri tre viene aumentato della percentuale?!


include


Con la direttiva include si specifica il nome di un file CFDG il cui codice sarà incluso nel file attuale.
È facoltativa.

In questo modo è possibile utilizzare regole già specificate in altri file senza doverle riscrivere.

La regola polygon5sided{} è specificata nel file i_polygons.cfdg.

In Context Free sono già presenti tre librerie di regole: i_curves, i_pix, i_polygons.
Ogni libreria ha la sua direttiva startshape che permette di testare tutte le regole presenti.

Quando la libreria sarà inclusa in un altro file sarà la prima direttiva startshape presente a decidere quale regola sarà eseguita per prima.


Figure primitive


Le figure primitive che possono essere disegnate da CFDG sono SQUARE, CIRCLE e TRIANGLE cioè quadrato, cerchio e triangolo

Il cerchio è traslato verso sinistra e il triangolo verso destra tramite il parametro x.

Si possono alterare altri parametri, come brightness

Se non si specificano i parametri essi assumono i valori di default segeuenti

Per confrontare le dimensioni delle figure è possibile sovrapporle

La figure primitive, senza alterazioni dei parametri, sono disegnate con

  • colore nero opaco
  • diametro del cerchio, lato del quadrato e lato del triangolo uguali
  • centri coincidenti.

Sostituzione


Una regola

specifica un elenco di nomi di figure primitive, eventualmente con parametri

oppure un elenco di regole, eventualmente con parametri

oppure sia nomi di figure che regole

I tre codici precedenti producono la stessa immagine…

ContextFree segue il percorso delle regole, a partire da quella specificata con startshape, e effettuando una sorta di sostituzione di ogni regola con la definizione corrispondente, continua finché ottiene una sequenza di specifiche di figure primitive che costituiscono il risultato finale.

Nel primo caso

Nel secondo

Nel terzo


Parametri


Se la chiamata di una regola ha dei parametri allora le alterazioni si ripercuotono a catena sulle chiamate successive

Il cerchio ha la dimensione, size, ridotta al 75% di quella del quadrato, il triangolo al 75% di quella del cerchio, quindi al 56,25% di quella del quadrato…

Analogamente per brightness aumenta la brillantezza del 33% ad ogni passo.

In pratica

Il triangolo subisce gli effetti di due trasformazioni

Si può ottenere lo stesso risultato con il codice seguente


Ricorsione


Una regola contiene a sua volta la chiamata di altre regole, ma se chiama se stessa?

Il primo cerchio nero, è seguito da un cerchio più piccolo e più chiaro, che a sua volta …

ContextFree smette di rincorrere le chiamate ricorsive quando la dimensione della figura non è più significativa, altrimenti il rendering richiederebbe tempi infiniti!

Le chiamate ricorsive possono essere due

Quattro… ma il tempo di rendering aumenta notevolmente

Si rende necessario ridurre size (basta già da 0.5 a 0.45…) per raggiungere prima la fine della ricorsione…


Casualità


Se una regola compare definita più volte ContextFree sceglierà in modo casuale quale eseguire, quindi per ogni comando Render si otterrà una figura potenzialmente diversa.

Se c’è un numero tra il nome della regola e la parentesi graffa aperta questo sarà utilizzato come peso altrimenti il valore di default è 1 per tutte

In questo caso i pesi sono 3, 1.5 e 0.5 per un totale di 5.
Il quadrato comparirà con probabilità 3/5 = 0.6 (… 0.3 per il cerchio e 0.1 per il triangolo)

Combinando ricorsione e casualità si ottengono delle figure molto interessanti…

Si tratta di due chiamate ricorsive alla regola FIGURERAND{} ma la FIGURA{} renderizzata può essere un cerchio o un quadrato

Nota

Se una figura è interessante si può forzare ContextFree a generarla di nuovo utilizzando il tasto < nella barra degli strumenti.
In pratica per ogni rendering viene generato un codice di tre lettere che può essere trascritto per essere riutilizzato in seguito oppure può essere recuperato subito tramite i tasti < >.


Ripetizione


Quando si vuole ripetere la stessa figura più volte si può ripetere la chiamata, cambiando per esempio la proprietà x

Esiste la possibilità di indicare quante volte si vuole ripetere la chiamata e come cambiano le proprietà

Quando il numero di ripetizioni è elevato questa possibilità aiuta a non commettere errori!

Confronta il codice seguente con l’originale!

A questo punto conviene approfittare della ripetizione: 360 volte con angolo 1°

La semplicità con cui si possono posizionare le figure su una circonferenza permette spunti interessanti


Traslazione


La figura primitiva è disegnata al centro in (0, 0) ma tramite i parametri x e y può essere traslata lungo i due assi

In questo esempio x e y assumono i valori -2 0 +2. L’ordinata non specificata vale 0.


Rotazione


La figura può essere ruotata tramite il parametro rotate (rot, r)

Il quadrato è utilizzato per evidenziare la rotazione dei triangoli.

Il centro del triangolo è sempre sul lato.


Ribaltamento


La figura può essere ribaltata rispetto a un asse passante per il suo centro e con l’angolo specificato dal parametro tramite flip (f )

Il quadrato è utilizzato per evidenziare la rotazione dei triangoli.
Il centro del triangolo è sempre sul lato.


Ridimensionamento


La figura può essere ridimensionata rispetto agli assi x e y tramite il parametro size

Il valore di default per il quadrato nero centrale è size 1 1.
Se compare un solo valore si riferisce a entrambe le dimensioni.


Stiramento


A partire da una figura primitiva si possono ottenere versioni deformate tramite il parametro skew

Il quadrato centrale subisce la stiratura con angoli di -30° -15° 0° +15° +30° per entrambi gli assi

Note

  • skew -30 +30 equivale a rotate +30
  • skew +30 -30 equivale a rotate -30.

Livello


L’ordine con cui appaiono le chiamate delle regole influenza l’ordine con cui le figure saranno renderizzate e quindi gli effetti di sovrapposizione

Il quadrato nero, disegnato per ultimo si trova al livello più alto

Se si vuole spostare indietro il quadrato nero bisogna spostare la chiamata corrispondente prima delle altre

Per ottenere un effetto qualsiasi con i livelli, senza dover ristrutturare il codice è stato introdotto il parametro z che specifica a quale livello sarà renderizzata una figura rispetto alle altre

Alcuni valori di z sono superflui, rispetto all’effetto voluto, ma sono stati specificati per completezza


Brillantezza


La figura può essere disegnata con brillantezza variabile da 0.0 a 1.0 tramite il parametro brightness o b

Note

  • Il primo quadrato ha brillantezza a 0, nero
  • A ogni passo il valore aumenta del 10% fino a diventare 1, bianco.

Saturazione


La figura può avere una saturazione di colore variabile da 0.0 a 1.0 tramite il parametro saturation o sat

In ogni quadrato il risultato dipende anche dal parametro brightness

Note

  • Il valore di default per hue è 0, rosso
  • brightness parte con 0, buio completo…

Tonalità


La figura può avere una tonalità di colore variabile da 0.0 a 360.0 tramite il parametro hue

La tonalità di colore dipende dall’angolo in gradi di una immaginaria ruota delle tonalità.
Tutti i quadrati hanno i parametri di colore saturation e brightness settati a 1 per avere colori saturi.


Trasparenza


Una figura può avere un certo grado di trasparenza per il suo colore tramite il parametro alpha che varia tra -1.0 e 0.0

I rettangoli di colore grigio e nero si intravedono attraverso i quadrati rossi semitrasparenti.
Il valore di default è 0, non trasparente.
I 5 quadrati hanno i parametri di colore saturation e brightness settati a 1 per essere di colore saturo.


Ordine di valutazione dei parametri


I parametri possono essere racchiusi tra parentesi graffe oppure quadre.
L’ordine di valutazione dei parametri cambia e determina risultati diversi

Le parentesi graffe portano a un ordine di valutazione dei parametri fisso TRSSF

  1. translate
  2. rotate
  3. scale
  4. skew
  5. flip

mentre le parentesi quadre forzano la valutazione da sinistra a destra.