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 …

startshape CERCHI1

shape CERCHI1
{
    CIRCLE []
    CERCHI1 
    [ 
        brightness 0.2  // più chiaro
        size       0.75 // più piccolo
    ]
}

Context Free 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

startshape CERCHI2

shape CERCHI2
{
   CIRCLE  []
   CERCHI2 [ brightness 0.2 size 0.5 x -0.25 ]
   CERCHI2 [ brightness 0.2 size 0.5 x +0.25 ]
}

Quattro chiamate ricorsive… il tempo di rendering aumenta notevolmente

startshape CERCHI4

shape CERCHI4
{
   CIRCLE {}
   CERCHI4 [ brightness 0.2 size 0.45 x -0.25         ]
   CERCHI4 [ brightness 0.2 size 0.45 x +0.25         ]
   CERCHI4 [ brightness 0.2 size 0.45         y -0.25 ]
   CERCHI4 [ brightness 0.2 size 0.45         y -0.25 ]
}

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

Lascia un commento