pinceau
Principe
Un pinceau (brush) est un
objet d´ anyflo,
utilisé conjointement avec des
images en mode palette.
Lorsqu´il est associé à la
souris (valeur par défaut)
il est affiché au pont cliqué. En mode programme il est affiché au point
poi brush(id)=x,y.
Il est nécessaire de faire yes brush pour que
les pinceaux soient pris en compte.
Par défaut leur type est un
disque, mais on peut aussi en faire un
rectangle.
Il peut être dynamique, c´est à dire
que sa trace peut continuer à vivre.
Il peut être gérée par un
réseau neuronal.
On peut aussi découper une fenêtre rectangulaire d´une image quelconque
et en faire une texture,
ou l´intérieur d´une ligne, par
image(id1,id2)line(L)poi(x,y)adjust puis image brush(id)=id2.
Un pinceau est nécessairement associé à une image, (par
image brush), sur laquelle il agit. L´histirique de cette action
est mémorisé (avec un temps de l´oubli défini par
time brush), ce qui permet de le rendre évolutif.
Mode mouse
Ils permettent de "peindre" directement (clic left) dans la bitmap de la carte graphic.
Pinceau programmable
Comme objets généraux d´anyflo ils en supportent toutes les
propriétés simples ou
multiples, on peut leur affecter des
trajectoires, ou les considérer comme individus de
populations de génétiques ou encore les
connecter aux sorties de réseaux neuronaux dont
les entrées peuvent être connectées à des
capteurs variés.
Remarques:
Il est nécessaire de faire close brush(id)=1 pour
dissocier le pinceau de la mouse et l´associer aux autres commandes d´anyflo.
Pour animer un pinceau avec des trajectoires il faut définir des trajectoires sur chaque
point, même s´il n´en existe qu´un, par:
traj(ni)transf(p)vertex(num)brush(id);
Il est nécessaire de faire yes traj pour que les
trajectoires soient prises en compte.
Exemple:
traj(100)tran(-200,0,0, 0,200,0, 200,0,0)ext(5,1,0)vertex(1)brush(1)period(-1);
Définit une trajectoire de déplacement sur un arc de 100 points pour le point 1 du pinceau 1
avec une period -1.
brush
brush(id)
brush(id_pi)image(id_im)dynamic;
définit un pinceau id_pi de type image associé à
l´image dynamic id_im
Crée le pinceau vide d´identificateur id.
Il faut lui affecter des propriétés simples ou multiples
pour le rendre opérationnel. Si on l´anime il faudra le rendre actif par
yes brush.
Pinceau dynamic
brush(id_pi)image(id_im)dynamic;
définit un pinceau id_pi dynamique associé à
l´image dynamic id_im.
Le mode palette devra afficher l´image en (x,y) et la commande
image(id_im)brush(id_pi)line(L)poi(x,y) stocke dans l´image du pinceau
la portion de l´image id_im intérieure à la ligne L, lorsque le pinceau est
sollicité (clic left) cette portion est affichée sous le pinceau mais elle set également
stockée dans l´image id_im et, celle-ci étant dynamique, les pixels changés entrent en
résonnance: et la trace du pinceau continue donc à vivre après son passage.
Pinceau neuronal
network brush(id)=idr associe au pinceau id le réseau neuronal idr.
Le pinceau capte une image Ic qu'il convole en un Motif passé en entrée du réseau
qui donne une sortie Loi laquelle est étendue en une image Ie:
Ic ==>[ convolution]==> Motif ==>[Réseau]==> Loi ==>[extension]==> Ie
Ic a pour dimensions les rayons du pinceau.
L´algorithme d´extension est déterminé par:
local(0)brush(id)="f" où f() est une fonction en langage anyflo, ou:
local(0)brush(id)=num où num est la case de la fonction
EXEC_PINCEAU_C(struct Objet *p_obj, long num) du fichier utilb.c
La Loi est stockée comme propriété meta du pinceau, la
fonction local doit retourner l´image Ie dans cette même propriété.
Propriétés simples
Définition à la creation
Les propriétés simples peuvent être définies à la création du pinceau:
Exemples:
brush(1)col(1,.8,.4);
définit un pinceau carré de couleur orange.
brush(id)disk poi(100,100)dim(30,20)col(0,1,0)illum(1,0,1);
Définit un pinceau en forme de disque plein, centré en (100,100), de rayons 30 (en x)
et 20 (en y), de couleur verte, opaque au centre et transparent sur le bord.
brush(id)image disk dim(30,20)col(0,0,1)illum(1,1,0);
Définit un pinceau image circulaire de rayons 30 et 20, de couleur bleue,
transparent au centre et opaque sur le bord.
Propriétés multiples
type brush
Retourne le type du pinceau id
disk brush(id)="ttt"
Change ce type:
disk
"disk": de taille radius brush(id) brush.
rectangle
"rectangle": de taille radius brush(id) brush.
line
"line": if faut avoir fait brush(id1)image(id2).
Voir aussi: