Utiliser la transparence avec cfdg

Cfdg permet de faire varier la transparence, la teinte et la luminosité à chaque étape. Cela peut être très utile pour améliorer l'esthétique du rendu.

Un pavage de dragons

Le principe

On part d'un carré.

startshape dragon
rule dragon{
    SQUARE{ }
}

On rajoute deux carrés à chaque étape

startshape dragon
rule dragon{
SQUARE{ }
SQUARE[s 0.707 r 45 x -0.5 y 0.5 ]
SQUARE[s 0.707 r 45 x 0.5 y -0.5 ]
}

On crée un processus récursif basé sur ce motif.

startshape dragon
background{b -1}
rule dragon{
SQUARE{ b 1  sat 0.8 h 45}
dragon[s 0.707 r 45 x -0.5 y 0.5 ]
dragon[s 0.707 r 45 x 0.5 y -0.5 ]
}

Le dessin obtenu n'est pas très joli. On va essayer de l'améliorer.


startshape dragon
background{b -1}

rule dragon{
dra{a -1 h 45 sat 0.8 }
}

rule dra{
SQUARE{ }
dra[s 0.707 r 45 x -0.5 y 0.5  a 0.1 b 0.13 ]
dra[s 0.707 r 45 x 0.5 y -0.5  a 0.1 b 0.13 ]
}

Le code ci-dessus donne aux carrés dessinés en premier une transparence totale a -1 et une luminosité nulle b 0 . À chaque étape, la transparence diminue a 0.1 et la luminosité augmente b 0.13; finalement on voit surtout les carrés dessinés en dernier.

Le code de l'image finale

L'image finale a été obtenue avec le code suivant ( option carré de 1000 pixels) et redécoupé avec Gimp.

startshape dragon
background{b -1}

rule dragon{
dra{a -1 h 45 	sat 0.8 b 0}
dra{a -1 h 12	sat 0.8 b 0 x 2 y 0}
dra{a -1 h 12 	sat 0.8 b 0 x 0 y 1}
dra{a -1 h 60 	sat 0   b 0 x 2 y 1}
dra{a -1 h 60 	sat 0   b 0 x 0 y 2}
dra{a -1 h 45 	sat 0.8 b 0 x 2 y 2}
dra{a -1 h 45 	sat 0   b 0 x 4 y 0}
dra{a -1 h 45 	sat 0.8 b 0 x 4 y 1}
dra{a -1 h 13 	sat 0.8 b 0 x 4 y 2}
}

rule dra{
SQUARE{ }
dra[s 0.707 r 45 x -0.5 y 0.5  a 0.1 b 0.13 ]
dra[s 0.707 r 45 x 0.5 y -0.5  a 0.1 b 0.13 ]
}

fait le 12 et 13 novembre 2008