adjust


ajuste des entités

Remarque importante

Toutes les fonctionnalités décrites dans ce fichier ne sont pas encore opérationnelles.


Principe
ang
audio
brush
force
image        inv
line
matrix
rota
secx      sphere
vol
Voir aussi

Principe

pf_mat2 = Les fonctions ´adjust com1 com2 ...´ permettent de définir des contraintes géométriques et dynamiques sur des objets. Une telle propriété peut être encapsulée dans un volume par:
        attach adjust ... vol(id)
        Elles définissent aussi des ajustements variés.

adjust ang

adjust ang(an)vol(id)

Fait adjust ang(an)line(p)p est une ligne de points du volume ids.
Options:
secx(x1,x2): p sont les sections en x entre x1 et x2) (x1=1 x2=nx par défaut), avec nx=secx vol(id).
secy(y1,y2): p sont les sections en y entre y1 and y2) (y1=1 y2=ny+1 par défaut), ny=secy vol(id).

adjust audio

Ajuste le coefficient audio de façon à ce que la valeur de l´audio soit compris entre c1 et c2.

adjust audio ini

Doit être fait une fois.

adjust audio coe

retourne adjust audio coe.

adjust audio coe=c1,c2

donne à adjust audio coe la valeur c1,c2 (0.1,1 par défaut).
coe audio est incrémenté de c1 et multiplié par c2.

adjust audio exec

Effectue l´ajustement.

adjust audio max

retourne adjust audio max.

adjust audio max=m2

donne à adjust audio max la valeur m2 (64 par défaut).

adjust audio min

retourne adjust audio min.

adjust audio min=m1

donne à adjust audio min la valeur m1 (64 par défaut).

adjust audio scalar

retourne adjust audio min,max,time.

adjust audio scalar=m1,m2,t

donne à adjust audio min max time les valeurs m1 m2 t.

adjust audio time

retourne adjust audio time.

adjust audio time=t

donne à adjust audio time la valeur t (50 par défaut).

adjust brush

adjust brush(id)

Retourne la propriété adjust du pinceau id.

adjust brush(id)=a,c,d,r

Change cette propriété.
Remarque:
Quand le type du pinceau id est adjust:
       a = coefficient de rayon (entre 1.0 et 5.0, 1.55 par défaut)
       c = coefficient de complexité (1.0 par défaut)
       d = distance des pixels (1.0 par défaut)
       r = aléatoire (entre 0.0 et 1.0, 0.0 par défaut)

adjust line

normal
time
win

adjust line(L)

        Retourne la ligne polygonale régulière construite sur L.

Options:
adjust(n): la ligne retournée a n points (n=NP(L) par défaut).
acc: retourne la ligne polygonale graduée.
adjust ext(e,c,f): réalise une distribution égale des sommets sur l´extension (e,c,f) de la ligne polygonale 3D L.
adjust(np)ext(e,c,f): construit la ligne avec np points (e*(np-1)+np) par défaut). accélérée.
ang(an,sens): force les segments de la ligne L à faire des angles tels que:
              Si sens > 0: Corrige les angles > an
              Si sens < 0: Corrige les angles < an
              Si sens = 0: Corrige les angles tels que: |an| > an (valeur par défaut).
clean(c)coe(d1,d2,n): avec c ="x", "y" ou "z": retourne un filtrage de la courbe L:
Les coordonnées correspondantes sont traitées. Par exemple pour c="y"
n=0:
Les points dont le y est inférieur à d1 sont ramenés à y=d1 et ceux dont le y est supérieur à d2 sont ramenés à y=d2.
n>=1:
Dans chaque intervalle d´amplitude 2*n+1:
S´il n´y a qu´un seul point dont le y est supérieur à d2 son y est ramené à la moyenne des y des points de l´intervalle.
S´il y a p point dont le y est supérieur à d2 les y de tout les points de l´intervalle sont ramenés à la moyenne des y de ces p points.
clean avec n>=1:
Les points 3D sont traités:
Pour chaque segment M(i)M(i+n), si un seul point est à une distance supérieure à d2 il est ramené à la moyenne des autres, s´il y en a p ils sont tous ramenés à la moyenne de ces p points.
dec: retourne une ligne polygonale graduée décélérée.
close: en fermant L.
dim(n,ind)min(m1)max(m2): retourne la ligne L nD ajustée à [min,max] pour l´indice ind (n=1 ind=0 par défaut).
format(1): L=x1,x2,...
format(2): L=x1,y1,x2,y2,...
law(w): retourne une ligne polygonale graduée selon la loi wL.
limit(x1,y1,z1,x2,y2,z2): ajustement à la boite (x1,y1,z1,x2,y2,z2).
pend: retourne une ligne polygonale graduée pendulaire.
vertex(s1,s2,...)tan(x1,y1,z1,x2,y2,z2,...): permet de forcer les tangentes (xi,yi,zi) aux sommets (xi,yi,zi) entre 0 et 5.

Exemples:
edit(adjust(5)line(-200,0,0, 200,0,0)tan(1,1,0, 1,-1,0)vertex(1,2)ext(3,1));
imprime:
       0: -200 0 0
       1: -108.768944 68.42394 0
       2: 0 100 0
       3: 108.768944 68.42394 0
       4: 200 0 0

edit(adjust(4)line(0,0,0, 100,0,0)vertex(1,2)tan(1,1,0, 1,-1,0)ext(4,1,0);)
prints;
       0 0 0
       31.6 20.6 0
       68.4 20.6 0
       100 0 0

adjust line win

adjust line(x1,y1,z1,...) win
        Retourne la ligne 3D (x1,y1,z1,...) ajustée dans la boite (-1,-1,-1,1,1,1).
adjust line(L) win(x1,x2)
        Retourne la ligne 1D L ajustée dans la boite (x1,x2).
adjust line(L) win(x1,y1,x2,y2)
        Retourne la ligne 2D L ajustée dans la boite (x1,y1,x2,y2).
adjust line(L) win(x1,y1,z1,x2,y2,z2)
        Retourne la ligne 3D L ajustée dans la boite (x1,y1,z1,x2,y2,z2).
etc...

adjust line normal

adjust line(p)normal("c")coe(d)
       Retourne p avec la composante x,y,z (selon que c="x", "y" ou "z") normalisée entre 0.0 et d.

adjust line(x1,y1,z1,...xn,yn,zn) time(t1,...,tn) ext(c) vertex(s) tan(t) coe(c)

        Retourne la ligne polygonale 3D L1 de (tn-t1+1) sommets, extension de la ligne (x1,y1,z1,...,xn,yn,zn) passant au temps ti par (xi,yi,zi).
Options:
ext(c): c règle la courbure (entre 0 et 1).
time(n): ajuste sur n sommets.
time(t1,...,tp): ajuste (t1,...,tp) sur n valeurs.
vertex(s):
        Si tan(t) est présent, les tangentes aux sommets s sont forcées a t.
        Si coe(c) est présent, les coefficients aux tangentes aux sommets sont forcées à c.
Utile en animation pour provoquer des évènements à des instants précis.
Exemples:
L=arc 200,PI,PI,4;
L1=adjust line(L) time(50) ext(.5);
L2=adjust line(L) time(50) ext(.5) vertex(1,4) tan(-300,-300,0, 100,0,0);
L3=adjust line(L) time(50) ext(.5) vertex(1,4) coe(0,3,0);


screen;displ(L);displ(L1)illum(1,0,0);displ(L2)illum(0,1,0);displ(L3)illum(1,1,0);
Les tangentes aux sommets 1 et 4 des lignes L2 et L3 sont modifiées.

adjust rota vol(id)

Calcule rota matrix vol(id) modulo DEUXPI.

adjust rotx vol(id)

Calcule rotx matrix vol(id) DEUXPI.

adjust roty vol(id)

Calcule roty matrix vol(id) DEUXPI.

adjust rotz vol(id)

Calcule rotz matrix vol(id) DEUXPI.

adjust secx vol(id)dist(d1,d2)

La distancede deux points consécutifs des sections en x du volume id est forcée entre d1 et d2. S´appele typiquement dans une fonction F4.

adjust vol(id)vertex(s)force(f,v)poi(g)radius(r1,r2)

        Met des forces aux points numéros s du volume id:
f = k * unit(ps - g)
k = 0 si d = dist(ps,g) > r2
k = f * (r2 - d) / (r2-r1) si r1 < d < r2
k = f si d <= r1
Remarques:
1) si vertex(s) est absent, tous les points sont traités.
2) f = amplitude maximum de la force (1 par défaut)
3) v est la viscosité (0 par défaut)
4) Si r2 est absent k = f / abs(d-r1)
Voir aussi adjust vol vol force radius.

adjust force

adjust(c)force rota add vol(id)

Fait:
s = sign(speed rota vol(id))
force rota add vol(id) += (s > 0) ? c : -c;
Permet de moduler des mouvements en fonction de l´amplitude c d´un capteur.

adjust image

luminance
transp luminance

adjust(r1,v1,b1,r2,v2,b2,rs,vs,bs)image(id)

        Commande permettant de seuiller inférieurement et supèrieurement l´image id: if(k < ks) k=k1, if(k >= ks)k=k2;

adjust luminance(l1,l2,ls)image(id)

        Commande permettant de seuiller inférieurement et supérieurement la luminance de l´image id: if(l < l l=l1; else l=l2;
Par défaut l1=0, l2=1 et ls=luminance image(id).
Exemple:
adjust luminance(0,1,.5)image(num); seuillage en noir et blanc.

adjust transp(t1,t2)luminance(l1,l2)image(id)

        Commande permettant de calculer la transparence en fonction de la luminance.

adjust inv vol

adjust(na) inv vol(id) poi(p) force(f,c) rota(r) exp(e) vertex(s1,s2)

        Le volume id est une extrémite d´une structure d´ancrage, il tend à atteindre dynamiquement le poin p en entrainant ses parents:
Options:
adjust(na): le processas est répété na fois (le suivi est amélioré lorsque na augmente)
force(f,c): une force d´amplitude f et d´attenuation c est appliquée.
exp(e): f = f * (d ^ e) avec d = dist(num,p)
rota(r): un couple d´amplitude r est appliqué
vertex(s1,s2): l´axe des volumes joint leurs sommets s1 et s2, sinon il joint le point d´ancrage suiveur au CG de chaque volume.

adjust matrix

adjust(c,c1,c2)matrix(m)

     Retourne la matrice m ajustée à c dans les limites c1,c2, (par défaut c=0.5, c1=0.0, c2=1.0):
m = (m > c) ? c2 : c1;

adjust sphere

adjust sphere(x,y,z)vol(id)

Les sommets du volume id sont contraints à être intérieurs à la sphère de centre (x,y,z) et de rayeon r.
Options:
coe(c): rebound coefficient (0 default, -1 is a good value).

adjust vol

coe
dist
exec
force
image
law
vmax
normal      NP
poi
rota      rotx      roty      rotz
secx      secy
vertex

adjust vol dist

dist secx        dist secy        dist vertex

adjust vol(id)dist(d1,d2) secx(s)

        Force les sommets des sections s en x du volume id à être séparés d´une distance comprise entre d1 et d2.
Remarques:
1) Si s est absent, toutes les sections en x sont traitées.
2) d2 = d1 par défaut.
3) Si d1 < 0 l´ordre des sommets est inversé.
4) adjust vol(id)dist(d1,d2)secx(s)abs: conserve les sommets extrêmes.

adjust vol(id)dist(d1,d2)secx(s)poi(x,y,z)

       Force les points de la section en x numéro s du volume id à être à une distance comprise entre d1 et d2 du point (x,y,z).
Remarques:
1) d2 = d1 par défaut.
2) Si (x,y,z) est absent, le point est remplacé par le center de gravité la section.
3) Si d1 < 0 l´ordre des sommets est inversé.
4) adjust vol(id)dist(d1,d2)secx(s) abs: conserve les sommets extrêmes.

adjust vol(id)dist secy(s)

        Force les sommets des sections s en y du volume id à être séparés d´une distance comprise entre d1 et d2.
Options:
coe(c): d1*=c;d2*=c; à chaque secy.
Remarques:
1) Si s est absent, toutes les sections en y sont traitées.
2) d2 = d1 par défaut.
3) Si d1 < 0 l´ordre des sommets est inversé.
4) adjust vol(id)dist(d1,d2)secy(s)abs: conserve les sommets extrêmes.

adjust vol(id)dist(d1,d2)secy(s)poi(x,y,z)

        Force les points de la section en y numéro s du volume id à être à une distance comprise entre d1 et d2 du point (x,y,z).
Remarques:
1) d2 = d1 par défaut.
2) Si (x,y,z) est absent, le point est remplacé par le center de gravité la section.
3) Si d1 < 0 l´ordre des sommets est inversé.
4) adjust vol(id)dist(d1,d2)secy(s) abs: conserve les sommets extrêmes.

adjust vol(id)dist(d1,d2)vertex(s)

        Force les sommets numéros s du volume id à être à une distance comprise entre d1 et d2 les uns des autres.
Remarques:
1) Utile pour contrôler l´extensibilité d´un volume souple.
2) exemple: d1=0.5*d, d2=2*d, avec d=taille de la maille du volume.
3) Si s est absent tous les sommets sont traités.
4) d2 = d1 par défaut.
5) adjust vol(id)dist(d1,d2)vertex(s)abs: conserve les sommets extrêmes.
6) adjust vol(id)dist(d1,d2)vertex(s)alea: choisit aléatoirement un sommet fixe (aléatoire reproductible).
7) adjust vol(id)dist(d1,d2)vertex(s)rand: choisit aléatoirement un sommet fixe (aléatoire non reproductible).

adjust vol(id)force(f)dist(d1,d2)vertex(s)vol

        Met des forces aux sommets numéros s du volume id de façon à maintenir leurs distances à leurs voisins entre d1 et d2.
Remarques:
1) Si s est absent, tous les sommets sont traités
2) f permet de régler l´intensité des forces (entre 0 et 100)

adjust vol(id1)image(id2)luminance(lum0)

         Chaque sommet du volume id1 est positionné à un pixel de l´image id2 si la luminance de ce pixel is > lum0 (0.5 par défaut), sinon il est positionné à (0,0,0).
Options:
dila(cx,cy): le volume id1 est dilaté de cx,cy (1,1 par défaut).
poi(x0,y0): le volume id1 est translaté de x0,y0 (0,0 par défaut).

adjust(cr,cv,cb) vol(id1) image(id2)

         Le z des points du volume id1 sont modifiés selon la formule:
         z -= (cr * r + cv * v + cb * b) / 3
         avec (r,v,b) = couleur moyenne de l´image id2 dans une fenêtre contenant les voisins de ce point.
Si id2 est absent, l´image courante est traîtée.
adjust vol image illum;
         Chaque point traîté prend la couleur de l´image.
adjust(ct,cs,cv) vol(n1) image(n2) hsv;
         Le z des points du volume id1 sont mofifiés selon la formule:
         z -= (ct * t + cs * s + cv * v) / 3
         avec (t,s,v) = (teinte,saturation,valeur) moyennes de l´image dans une fenêtre contenant les voisins de ce point.
adjust vol image limit;
         Le volume est ajusté dans la fenêtre de l´image contenant des pixels différents du fond.
adjust vol image precision(eps);
         La comparaison se fait avec une approximation de eps.
adjust vertex(s) vol image;
         Seuls les points numéros s seront traîtés.
Exemple:
         adjust(100,50,30) vertex[100,200] vol(1) image;
adjust("x",crx,cvx,cbx,"y",cry,cvy,cby,"z",crz,cvz,cbz)vol image;
         Le (x,y,z) des points du volume sont modifiés selon les formules:
         x -= (crx * r + cvx * v + cbx * b) / 3
         y -= (cry * r + cvy * v + cby * b) / 3
         z -= (crz * r + cvz * v + cbz * b) / 3

adjust("toto") vol image;
         Le (x,y,z) des points du volume sont modifiés par la fonction utilisateur de nom toto dans laquelle on peut utiliser les commandes suivantes:
         p=poi: récupere les coordonnées espace du point affiché
         k=illum: récupere la couleur (r,v,b) du point écran
         t=hsv(k): récupere le (t,s,v) du point écran
         p=fonction(p,k): calcule la nouvelle position
         poi(p): valide cette position
adjust exec(c,v1,v2,...) vol image;
         La fonction adjust_vol_image_utilisateur sera executée avec le code c et les valeurs v1, v2, .... Il sera nécessaire de modifier cette fonction dans le fichier utilb.c et de relinker anyflo. (voir ´manuel.applic.htm´).
Remarques:
         1) (cr,cv,cb) = (100,100,100) par défaut.
         2) Si id2 est absent ou nul, l´image courante est traîtée.
         3) Cette fonction permet de "monter" un relief à partir d´une image 2D.
         4) Toutes les formes précédentes sont combinables.
         5) Pratiquement:
         Construire une image (synthétisée ou digitalisée)
         Construire un volume (de préférence une grille fine vue de face)
         Invoquer adjust vol image
Exemples:
adjust(100,50,-50) vol(1) image;
adjust(100,70,40) vol(1) illum limit vertex[12,120] image(1);

adjust vol law

adjust vol(id)law

Si le volume id se meut sur une trajectoire, cette commande retourne:
        v/r1/3, avec v =vitesse tangentielle et r = rayon de courbure.
C´est la loi de la puissance 1/3 qui précise que, pour un mouvement naturel, ce rapport doit être constant par morceaux (de l´order de 1 / 1000).
Remarques:
1) yes radius doit être actif pour générer les rayons de courbure.
2) Il faut law vol(id)=1

adjust vol(id1,id2)law

Si les volume idi sont ancrés et de pè id1, cette commande retourne la somme des vitesses angulaires des volumes id3 par rapport à id2 et id2 par rapport à son père. La loi d' opposition de phase précise que cette somme doit être constante pour un mouvement naturel (ce qui signifie que lorsque id1 varie dans un sens, id2 varie dans le sens contraire).

adjust vol(id1,id2,id3)law

Si les volumes idi sont ancrés, cette commande retourne le point (va1,va2,va3) de coordonnées les vitesses angulaires des volumes id3 par rapport à id2, id2 par rapport à id1 et id1 par rapport à son père. La loi du plan de phase précise que, pour un mouvement naturel, ce plan est constant.

adjust vol(id)max poi(p)

        Force les points p du volume id à ne pas s´éloigner de plus de d des points mémorisés par validate(1)poi vol(id)

adjust vol(id)max vertex(s)

        Force les sommets s du volume id à former une ligne polygonale de longueur maximum d.
Utilisation:
Pour une grille munie de ressorts, cette fonction permet de simuler un tissus élastique d´élongation limitée.

adjust(s1,p1,v1,d1,s2,p2,v2,d2,...)vol(id)normal

        Les sommets s1,s2,... du volume id seront respectivement forcés sur les normales aux sommets p1,p2,... des volumes v1,v2,... à une distance de d1,d2,...

adjust vol(id)NP

        Complête éventuellement les propriétés ´... vertex´ au nombre de points du volume id.
Remarque:
Si id est absent, tous les volumes sont traités.

adjust vol(id1)poi(x,y,z)vol(id2)vertex(v1,v2)

Le volume id1 est translaté et tourné de façon à ce que son sommet v1 soit sur le sommet v2 du volume id2 et que son axe y passe par le point (x,y,z).
Remarque: il faut translater le volume id1 à son sommet v1:
       tran(poi(v1)vol(id1))vol(id1);

adjust(an1,an2) vol(id1,id2)axis(x1,y1,z1,x2,y2,z2) rota

Remarques:
1) Les volumes id1 et id2 doivent être munis d´axes.
2) Soit d1 = le vecteur de composantes (x1,y1,z1) dans les axes de id1 et soit d2 = le vecteur de composantes (x2,y2,z2) dans les axes de id2:
L´angle (d1,d2) est astreint à être compris entre an1 et an2.

adjust vol rotx

adjust(an1,an2) vol(id1,id2)rotx
        En animation dynamic les axes des volumes id1 et id2 sont astreints à avoir l´angle des axes en x compris entre an1 et an2.
Remarques:
1) Les volumes id1 et id2 doivent être munis d´axes.
2) Si (an1,an2) est absent, les axes en x coïncident.
3) si id2 est absent (ou égal à 0), le volume id2 est remplacé par les axes
4) adjust(an11,an12,an21,an22,...) vol(n0,n1,n2,...) rotx realise:
adjust(an11,an12) vol(n0,n1)rotx;
adjust(an21,an22) vol(n0,n2) rotx;
etc...
5) adjust(an1,an2) vol(n0,n1)force(k,v) rotx: une ´force ajust´ est appliquée au volume id2 de façon à ce que l´angle des axes en x soit compris entre an1 et an2.
k = module de la force (1 par défaut)
v = viscosité (0 par défaut)

adjust vol roty

adjust(an1,an2) vol(id1,id2)roty
        En animation dynamic les axes des volumes id1 et id2 sont astreints à avoir l´angle des axes en y compris an1 et an2.
Remarques:
1) Les volumes id1 et id2 doivent être munis d´axes.
2) Si (an1,an2) est absent, les axes en y coïncident.
3) si id2 est absent (ou égal à 0), le volume id2 est remplacé par les axes.
4) adjust(an11,an12,an21,an22,...) vol(n0,n1,n2,...) roty réalise:
adjust(an11,an12) vol(n0,n1)roty;
adjust(an21,an22) vol(n0,n2) roty;
etc...
5) adjust(an1,an2) vol(n0,n1)force(k,v) roty: une ´force ajust´ est appliquée au volume id2 de façon à ce que l´angle des axes en y soit compris an1 et an2.
k = module de la force (1 par défaut)
v = viscosité (0 par défaut)

adjust(an1,an2) vol(n0,n1)rotz

        En animation dynamic les axes des volumes id1 et id2 sont astreints à avoir l´angle des axes z0 et z1 compris entre an1 et an2.
Remarques:
1) Les volumes id1 et id2 doivent être munis d´axes.
2) Si (an1,an2) est absent, les axes en z coïncident.
3) si id2 est absent (ou égal à 0), le volume id2 est remplacé par les axes
4) adjust(an11,an12,an21,an22,...) vol(n0,n1,n2,...) rotz réalise:
adjust(an11,an12) vol(n0,n1)rotz;
adjust(an21,an22) vol(n0,n2) rotz;
etc...
5) adjust(an1,an2) vol(n0,n1)force(k,v) rotz: une ´force ajust´ est appliquée au volume id2 de façon à ce que l´angle des axes en z soit compris entre an1 et an2.
k = module de la force (1 par défaut)
v = viscosité (0 par défaut)

adjust vol(id)secx(s) line(w)

        Ajuste les sections en x de numéros s du volume id à la ligne polygonale 3D w.

adjust vol(id)secy

        Force les sommets des sections successives en y du volume id à être "en face" et à être de sens direct (utile pour rectifier un tuyau tordu).
Remarque:
Le volume id doit être isomorphe à une grille fermée.

adjust vol(id)secy(s) line(w)

        Ajuste les sections en y de numéros s du volume id à la ligne polygonale 3D w.

adjust vol(id)vertex(s)dist(d1,d2)poi(g)

       Limite les distances des sommets s du volume id au point g entre d1 et d2.
Remarques:
Si g est absent c´est le CG du volume id par défaut.
Si sest absent tous les sommets sont triatés.

adjust(n) obj(id) vertex(s) ext(e,c,f)

        Equi répartit les sommets s de l´objet id sur leur contour.
Remarques:
1) obj est: vol, light ,fog, traj, cin
2) adjust vertex(n1) close obj(n2): pour un contour fermé
3) L´ajustement est d´autant meilleur que n est grand entre 1 et 20 (1 par défaut).
4) Si s est absent tous les sommets sont traités.
5) Si ext(e,c,f) est present, l´équirepartition se fera sur l´extension (e,c,f) de l´objet id (voir ext vol).

adjust vol(id)vertex(s) near dist(d)


       Corrige les points numéros s du volume id pour qu´ils ne s´éloignent de plus de d de leurs voisins.
Remarque:
Si s est absent, tous les points sont traités.

adjust vol(id) coe(c)

        Lorsque plusieurs points du volume id sont "égaux" à c près, les facettes les contenant ne feront référence qu´au premier d´entre eux.
Remarques:
1) c = 0 par défaut.
2) Cette fonction est utile pour supprimer les points multiples d´un volume (par exemple les facettes passant par les poles d´une boule), lesquels peuvent introduire des effets de bord dans le "shading"

adjust(d,k) vol(id1) vol(id2)

        Fait coïncider les points du volume id1 avec ceux du volume id2 a d près.

1) Fonction utile pour caler un volume sur un autre.
2) k = 0.25 par défaut

adjust(cr,cv,cb) vol(id1) image(id2)

        Le z des points du volume id1 sont modifiés selon la formule:
z -= (cr * r + cv * v + cb * b) / 3
avec (r,v,b) = couleur moyenne de l´image id2 dans une fenêtre contenant les voisins de ce point.
Options:
illum: chaque point traité prend la couleur de l´image.
coe(c): les déplacements sont multipliés par c * r, avec r = rayon de la maille passant par le point traité (si le volume est isomorphe à une grille).
Remarques:
1) Par défaut un antialiasing automatique est réalisé dans une fenêtre contenant les voisins de chaque sommet.
2) adjust vol image alias(a): permet de contrôler la taille de la fenêtre:
a < 0: antialiasing automatique (valeur par défaut).
a = 0: pas d´antialiasing.
a > 0: fenêtre de taille a.
hsv: le z des points du volume id1 sont modifiés selon la formule:
z -= (ct * t + cs * s + cv * v) / 3
avec (t,s,v) = (teinte,saturation,valeur) moyennes de l´image id2 dans une fenêtre contenant les voisins de ce point.
limit: le volume est ajusté dans la fenêtre de l´image contenant des pixels différents du fond.
precision(eps): la comparaison se fait avec une approximation de eps.
vertex(s): seuls les points numéros s seront traités.
Exemple:
adjust(100,50,30) vol(1)vertex[100,200] image;
adjust("x",crx,cvx,cbx,"y",cry,cvy,cby,"z",crz,cvz,cbz)vol image;
        Le (x,y,z) des points du volume sont modifiés selon les formules:
x -= (crx * r + cvx * v + cbx * b) / 3
y -= (cry * r + cvy * v + cby * b) / 3
z -= (crz * r + cvz * v + cbz * b) / 3

adjust("n",cr,cv,cb)vol image
        Les points du volume sont deplacés le long de leur normal de:
(cr * r + cv * v + cb * b) / 3
adjust("toto") vol image
        Le (x,y,z) des points du volume sont modifiés par la fonction utilisateur de nom toto dans laquelle on peut utiliser les commandes suivantes:
p = poi: récupère les coordonnées espace du point affiché.

k = illum: récupère la couleur (r,v,b) du point écran.
t = hsv(k): récupère le (t,s,v) du point écran.
p = fonction(p,k): calcule la nouvelle position.
poi(p): valide cette position.

adjust vol exec(c,v1,v2,...) image

        La fonction adjust_vol_image_utilisateur sera exécutée avec le code c et les valeurs v1, v2, ... Il sera nécessaire de modifier cette fonction dans le fichier utilb.c et de relinker anyflo.
Remarques:
1) (cr,cv,cb) = (100,100,100) par défaut.
2) Si id2 est absent ou nul, l´image courante est traitée.
3) Cette fonction permet de "monter" un relief à partir d´une image 2D.
4) Toutes les formes précédentes sont combinables.
5) Pratiquement:
Construire une image (synthétisée ou digitalisée).
Construire un volume (de préférence une grille fine vue de face).
Invoquer adjust vol image.
Exemples:
adjust(100,50,-50) vol(1) image;
adjust(100,70,40) vol(1) illum limit vertex[12,120] image(1);

Voir aussi:

generate genetic adjust