adjust


adjusts entities


Principle
adjust
ang
audio
brush
force
image        inv
line
matrix        memory
rota
secx      sphere
vol
See also

Principe

The functions com1 com2 adjust ... These functions allow you to define geometric constraints and dynamic objects. Such a property can be encapsulated in one volume:
        attach adjust ... vol(id)
        They also define various adjustments.

adjust

adjust(np)

Returns 3D vector 0,0,0, ..., 1,1,1
Options:
format(f): vector size f (f=1,2,3, 3 by default).
adjust(np,v1,v2) vector interpolated between v1 and v2 according to format.
var(n,v1,v2):
        v{0,n-1} interplated from v1 to v2
        v{n-np-n} = v1
        v{np-n,np-1} interplated from v2 to v1
Examples:
adjust(2); returns:
        0 0 0
        1 1 1

adjust(2)format(1); returns:
        0 1

adjust(4, 1,2, 3,4)format(2); returns:
        1 3
        1.333333 3.333333
        1.666667 3.666667
        2 4

adjust(8)var(3,[1,6]); returns:
        1 2 3
        2.5 3.5 4.5
        4 5 6
        4 5 6
        4 5 6
        4 5 6
        2.5 3.5 4.5
        1 2 3

adjust ang

adjust ang(an)vol(id)

Does adjust ang(an)line(p) where p is a line of points of volume ids.
Options:
secx(x1,x2): p are the x sections between x1 and x2) (default x1=1 x2=nx), with nx=secx vol(id).
secy(y1,y2): p are the y sections between y1 and y2) (default y1=1 y2=ny+1), ny=secy vol(id).

adjust audio

Adjust the audio coefficient so that the audio value is between c1 and c2.

adjust audio ini

Must be done once.

adjust audio coe

returns adjust audio coe.

adjust audio coe=c1,c2

gives adjust audio coe the value c1,c2 (0.1,1 default).
coe audio is incremented by c1 and multiplied by c2.

adjust audio exec

Performes the adjustment.

adjust audio max

returns adjust audio max.

adjust audio max=m2

gives adjust audio max the value m2 (64 default).

adjust audio min

returns adjust audio min.

adjust audio min=m1

gives adjust audio min the value m1 (64 default).

adjust audio scalar

returns adjust audio min,max,time.

adjust audio scalar=m1,m2,t

gives adjust audio min max time the values m1 m2 t.

adjust audio time

returns adjust audio time.

adjust audio time=t

gives adjust audio time the value t (50 default).

adjust brush

adjust brush(id)

Returns the property adjust of brush id.

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

Changes this property.
Note:
When the type of brush(id) is adjust:
       a = radius coefficient (between 1 and 5, 1.5 default)
       c = complexity coefficient (1.0 default)
       d = pixels distance (1.0 default).
       r = random (between 0.0 and 1.0, 0.0 default)

adjust line

normal
time
win

adjust line(L)

       Returns the regular polyline constructed on L.

Options:
adjust(n): line returned has n points (n=NP(L) by default).
adjust ext(e,c,f): realizes equal distribution of the vertices on the extension (e,c,f) of the polygonal line 3D L.
adjust(np)ext(e,c,f): builds a line with np points (default e*(np-1)+np).
acc: returns the polyline graduated accelerated.
ang(an,sens): forces segments of the line L to angles such that:
              if sens > 0: Corrects angles > an
              if sens < 0: Corrects angles < an
              if sens = 0: Corrects angles such as: |an| > an (value by default).
clean(c)coe(d1,d2,n): with c ="x", "y" or "z": returns a filtering of the curve L.
The corresponding coordinates are processed. For example for c="y"
n=0:
Points which y is less than d1 are reduced to y = d1 and those whose y isgreater than d2 are reduced to y = d2.
n>=1:
In each interval amplitude 2 * n 1:
If there is one point which y is greater than d2 his y is reduced to the average of the y points of the interval..
If there are p points which y is graeter than d2 the y of all the points of the interval are reduced to average y of these p points.
clean with n>=1
:
3D points are processed:
For each segment M(i)M(i+n), if only one point is at a distance d2 greater than d2 it is reduced to the average of the other, if there are p all reduced to the average of the p points.
dec: returns a polyline graduated decelerated.
close: closing L.
dim(n,ind)min(m1)max(m2): returns the nD line L adjusted to [min,max] for index ind (n=1 ind= 0 default).
format(1): L=x1,x2,...
format(2): L=x1,y1,x2,y2,...
law(w): returns a polyline graduated according to the law w.
limit(x1,y1,z1,x2,y2,z2): adjusting to the box (x1,y1,z1,x2,y2,z2).
pend: returns a polyline graduated sinusoidal.
tan(x1,y1,z1,x2,y2,z2,...): allows to force the tangents (xi,yi,zi).
var(n): line returned is:
       L{0,n-1} interpolated between 0 and 1
       L{n,np-n,-1} 1
       L{np-n,np-1} interpolated between 1 and 0
vertex(s1,s2,...)tan(x1,y1,z1,x2,y2,z2,...): allows to force the tangents (xi, yi, zi) to vertices i.

Examples:
edit(adjust(5)line(-200,0,0, 200,0,0)tan(1,1,0, 1,-1,0)vertex(1,2)ext(3,1));
prints:
       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
        Returns the 3D line (x1, y1, z1, ...) adjusted in the box (-1, -1, -1,1,1,1).
adjust line(L) win(x1,x2)
        Returns the 1D line adjusted in the box (x1,x2).
adjust line(L) win(x1,y1,x2,y2)
        Returns the 2D line adjusted in the box (x1,y1,x2,y2).
adjust line(L) win(x1,y1,z1,x2,y2,z2)
        Returns the 3D line adjusted in the box (x1,y1,z1,x2,y2,z2).
etc...

adjust line normal

adjust line(p)normal("c")coe(d)
       Returns the line p with the x component, y or z (depending c = "x", "y" or "z") between 0.0 and d normalized.

adjust line time ext

adjust line(x1,y1,z1,...xn,yn,zn) time(t1,...,tn) ext(c) vertex(s) tan(t) coe(c)
        Returns the 3D polygonal line L1 (t1-tn +1) peaks, extension of the line (x1, y1, z1, ..., xn, yn, zn) by passing at time ti (xi, yi, zi).
Comments:
1) If ext (c) is present, sets the curvature c (between 0 and 1).
2) time(n): adjusts on n vertices.
time(t1,...,tp) adjusts (t1,...,tp) sur n valeurs.
3) if vertex(s) is present:
        if tan(t) is present, the tangents to the vertices s are forced to t.
        if coe(c) is present, coefficients to the tangents at the vertices are forced to c.
4) Useful in animation to cause events at specified times.
Examples:
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); The tangents at vertices 1 and 4 of lines L2 et L3 are modified.

adjust memory(id)

Adjusts the first component of vectors of memory(id) between 0.0 and 1.0.
Options:
adjust(d): adjusts between 0.0 and d.
adjust(d1,d2): adjusts between d1 and d2.
format(ind): component ind (beetween 0 and (dim memory(id))-1).

adjust rota vol(id)

Computes rota matrix vol(id) modulo DEUXPI.

adjust rotx vol(id)

Computes rotx matrix vol(id) DEUXPI.

adjust roty vol(id)

Computes roty matrix vol(id) DEUXPI.

adjust rotz vol(id)

Computes rotz matrix vol(id) DEUXPI.

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

The distance of two consecutive points of x sections of volume id is forced to be between d1 and d2. Typically called in function F4.

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

        forces to the points s of the volume id:
f = k * unit(ps - g)
k = 0 if d = dist(ps,g) > r2
k = f * (r2 - d) / (r2-r1) if r1 < d < r2
k = f if d <= r1
Comments:
1) if vertex(s) is absent, all points are processed.
2) f = maximum force amplitude (1 by default)
3) v = viscosity (0 by default)
4) if r2 is absent k = f / abs(d-r1)
See also adjust vol vol force radius.

adjust force

adjust(c)force rota add vol(id)

Does:
s = sign(speed rota vol(id))
force rota add vol(id) += (s > 0) ? c : -c;
Allows modulate motions according to the amplitude c of a sensor.

adjust image

&

luminance
transp luminance

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

        command to thresholding inferiorly and superiorly image id: if(k < ks) k=k1; if(k >= ks) k=k2;

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

        Command to inferiorly and superiorly thresholding the image id: If k = ks k = k2
By default l1=0, l2=1 and ls=luminance image(id).
Exemple:
adjust luminance(0,1,.5)image(num); thresholding in black and white.

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

        Command to calculate the transparency depending on the luminance.

adjust inv vol

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

        The volume id is the extremity of an anchor structure, it tends to reach dynamically the point p in causing his parents:
if n is présent, the process is repeated n times (monitoring is improved when n increases)
if force(f,c) is present, force amplitude attenuation f and c applied.
if exp(e) is present, f = f * (d ^ e) with d = dist(num,p)
if rota(r) is present, a force couple amplitude r is applied.
if vertex(s1,s2) is present, axis volumes joined vertices s1 and s2, if he joins the anchor follower of each volume in CG.

adjust matrix

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

     Returns the matrixm adjusted to c within c1, c2(c=0.5, c1=0.0, c2=1.0 by default):
m = (m > c) ? c2 : c1;

adjust sphere

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

Vertices of volume id are forced to be inside the sphere center (x,y,z) and radius r.
Options:
coe(c): coefficient de rebond (0 par défaut, -1 est une bonne valeur).

adjust vol

coe
dist
exec
force
image
law
max
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 vertices x sections s of the volume id to be separated by a distance between d1 and d2.
Notes:
1) All x sections are processed by default.
2) d2 = d1 by default.
3) if d1 < 0 the order of the vertices is reversed.
4) adjust vol(id)dist(d1,d2)secx(s)abs: retains extreme vertices.

adjust vol dist secx poi

adjust vol(id)dist(d1,d2)secx(s)poi(x,y,z)
       forces points of the x section number s of the volume id to be at a distance between d1 and d2 of the point (x, y, z).
Notes:
1) d2 = d1 by default.
2) if (x,y,z) is absent, the point is replaced by par the section center of gravity.
3) if d1 < 0 the order of the vertices is reversed.
4) adjust vol(id)dist(d1,d2)secx(s) abs: retains extreme vertices.

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

        Force vertices y sections s of the volume id to be separated by a distance between d1 and d2.
Options:
coe(c): d1*=c;d2*=c; every secy.
Notes:
1) All x sections are processed by default.
2) d2 = d1 by default.
3) if d1 < 0 the order of the vertices is reversed.
4) adjust vol(id)dist(d1,d2)secy(s)abs: retains extreme vertices.

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

        forces points of the y section number s of the volume id to be at a distance between d1 and d2 of the point (x, y, z).
Comments:
1) d2 = d1 by default.
2) if (x,y,z) is absent, the point is replaced by par the section center of gravity.
3) if d1 < 0 the order of the vertices is reversed.
4) adjust vol(id)dist(d1,d2)secy(s) abs: retains extreme vertices.

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

        Force vertices y sections s of the volume id to be separated by a distance between d1 and d2.
Comments:
1) All x sections are processed by default.
2) d2 = d1 by default.
3) if d1 < 0 the order of the vertices is reversed.
4) adjust vol(id)dist(d1,d2)secy(s)abs: retains extreme vertices.
Comments:
1) Useful for controlling the extension of a flexible volume.
2) example: d1=0.5*d, d2=2*d, with d=mesh size of the volume.
3) All vertices are processed by default.
4) d2 = d1 by default.
5) adjust vol(id)dist(d1,d2)vertex(s)abs: retains extreme vertices.
6) adjust vol(id)dist(d1,d2)vertex(s)alea
: randomly selects a fixed vertex (random reproducible).
7) adjust vol(id)dist(d1,d2)vertex(s)rand:randomly selects a fixed vertex (random no reproducible).

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

        Puts forces at vertex s of volume id so as to keep their distance from their neighbors between d1 and d2.
Comments:
1) All vertices are processed by default.
2) f allows to adjust the amplitude of the forces (between 0 et 100)

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

         Each vertice of volume id1 is set to a pixel position of image id2 if the luminance of this pixel is > lum0 (0.5 default), else it is set to (0,0,0).
Options:
dila(cx,cy): the volume id1 is espensed by cx,cy (1,1 default).
poi(x0,y0): the volume id1 is translated by x0,y0 (0,0 default).

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

         The z of the points of volume id1 are changed according the formula:
         z -= (cr * r + cv * v + cb * b) / 3
         with (r,v,b) = average color of the image id2 in a window with the neighbors of this point.
current image is processed by default.
adjust vol image illum;
         Each point is the color of the image.
adjust(ct,cs,cv) vol(id1) image(id2) hsv
         Z points of the id1 volume are changed according to the formula:
         z -= (ct * t + cs * s + cv * v) / 3
         with hsv = (hue, saturation, value) average of the image in a window with the neighboring point.
adjust vol image limit;
         The volume is adjusted in the image window containing pixels of a color other than that of the background.
adjust vol image precision(eps);
         The comparison is made with an approximation of eps.
adjust vertex(s) vol image;
         Only points s will be processed.
Example:
         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;
         The (x,y,z) in the volume are changed according to formulas:
         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;
         The (x, y, z) points in the volume are modified by the user function name foo where you can use the following commands:
         p=poi: Retrieves the coordinates of the point space displayed.
         k=illum: Retrieves the color (r, g, b) point screen.
         t=hsv(k): Retrieved (h, s, v) point screen.
         p=fonction(p,k): computes new position
         poi(p): validate this position
adjust exec(c,v1,v2,...) vol image;
         adjust_vol_image_utilisateur function will be executed with the c code and values v1, v2, ... You will need to modify this function in the file utilb.c and to link anyflo. see applications.
Comments:
         1) (cr,cv,cb) = (100,100,100) by default.
         2) the current image is processed by default.
         3) This function allows you to "mount" a relief from a 2D image.
         4) All previous forms are combined.
         5) Virtually: Build an image (synthesized or digitized). Build a volume (preferably a thin grid front view) invoke adjust vol image
         6) Examples:
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

If the volumeid moves along a path, this command returns:
        v/r1/3, with v=tangential velocity and r = radius of curvature.
The
power law 1/3 states that, for a natural movement, this report must be piecewise constant (of the order of 1/1000).
Comments:
1) yes radius must be active to generate the radii of curvature.
2) Requires law vol(id)=1

adjust vol(id1,id2)law

If the volumes idi are anchored and father id1, this command returns the sum of the angular velocities of volumes id3 compared to id2 and id2 compared to his father. The phase opposition law states that, for a natural movement, this sum must be piecewise constant. (this means that when id1 in a direction, id2 varies in the opposite direction).
Example:
force rota add vol(radius_g)=-abs(.25*(adjust vol(humerus_g,thorax)law));

adjust vol(id1,id2,id3)law

If the volumes idi are anchored idi, this command returns the point (va1,va2,va3) coordinate angular velocities volumes id3 compared with id2, id2 compared with id1 and id1 compared to his father. The law of the phase plane indicates that, for a natural movement, this plan is constant.

adjust vol(id)max poi(p)

        Force points s volume id not get away with more points memorized by : validate(1)poi vol(id).

adjust vol(id)max(d)vertex(s)

        Force vertex s of volume id to form a polygonal line of maximum length d.
Use:
For a grid fitted with springs, this function simulates a tissue elastic elongation limited.

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

       The vertices s1, s2, ... of volume id are respectively forced on normal vertices p1, p2, ... of volumes v1, v2, ... at a distance of d1, d2, ...

adjust vol(id)NP

        Possibly supplemented properties ... vertex at points of the volume id.
Comment: all volumes are processed by default.

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

Volume id1 is translated and rotated as its vertex v1 is on vertex v2 of volume id2 and as its y axis passes through point (x,y,z).
Note: you have to translate volume id1 to its vertex v1:
       tran(poi(v1)vol(id1))vol(id1);

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

Comments:
1) Volumes id1,id2 must have. axes.
2) Let d1 = the vector with components (x1, y1, z1) in the axes of either id1 and d2 = the vector with components (x2, y2, z2) in the axes of id2.
The angle of the axes d1 and d2 is required to be between an1 and an2.

adjust(an1,an2)vol(id1,id2)rotx

        In dynamic animation axes volumes id1 andid2 are bound to have the x axes angle between an1 and an2.
Comments:
1) Volumes id1 and id2 must have axes.
2) if (an1,an2) is absent, x axes coincide.
3) if id1 is absent, volume id1 is replaced by axes.
4) adjust(an11,an12,an21,an22,...) vol(id1,id2,...) rotx realizes:
adjust(an11,an12) vol(n0,n1)rotx;
adjust(an21,an22) vol(n0,n2) rotx;
etc...
5) adjust(an1,an2) vol(id1,id2)force(k,v) rotx: A 'force adjust' is applied to the volume id2 such that the angle of the x axes is between an1 and an2.
k = force module (1 by default)
v = viscosity (0 by default)

adjust(an1,an2) vol(id1,id2)roty

        In dynamic animation axes volumes id1 andid2 are bound to have the y axes angle between an1 and an2.
Comments:
1) Volumes id1 and id2 must have axes.
2) if (an1,an2) is absent, y axes coincide.
3) if id1 is absent, volume id1 is replaced by axes.
4) adjust(an11,an12,an21,an22,...) vol(id1,id2,...) rotx realizes:
adjust(an11,an12) vol(n0,n1)roty;
adjust(an21,an22) vol(n0,n2) roty;
etc...
5) adjust(an1,an2) vol(id1,id2)force(k,v) roty: A 'force adjust' is applied to the volume id2 such that the angle of the y axes is between an1 and an2.
k = force module (1 by default)
v = viscosity (0 by default)

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

        In dynamic animation axes volumes id1 andid2 are bound to have the z axes angle between an1 and an2.
Comments:
1) Volumes id1 and id2 must have axes.
2) if (an1,an2) is absent, z axes coincide.
3) if id1 is absent, volume id1 is replaced by axes.
4) adjust(an11,an12,an21,an22,...) vol(id1,id2,...) rotz realizes:
adjust(an11,an12) vol(n0,n1)rotz;
adjust(an21,an22) vol(n0,n2) rotz;
etc...
5) adjust(an1,an2) vol(id1,id2)force(k,v) rotx: A 'force adjust' is applied to the volume id2 such that the angle of the z axes is between an1 and an2.
k = force module (1 by default)
v = viscosity (0 by default)

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

        Adjust x sections s of volume id to the 3D polygonal line w.

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

        Force vertices in successive sections to the volume id to be "in front" and be forward direction (useful for correcting a bent pipe).
Comment:
The volume id must be isomorphic to a closed grid.

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

        Adjusts y sections sof volume id to the 3D polygonal line w.

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

       Limit the distances of vertices s of volume id in g between d1 and d2.
Comments:
g = center of gravity of volume id by default.
if s is absent all vertices are processed.

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

        Equi distribute vertices s of de object id on their contour.
Comments:
1) obj is: vol, light ,fog, traj
2) adjust vertex(s) close obj(id): for a closed contour.
3) The fit is even better than large n between 1 and 20 (1 by default).
4) if s is absent all vertices are processed.
5) ext(e,c,f): the equidistribution will by the extension).

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


       Corrects the volume idvertices s so that they do away with a distance spérieure d their neighbors.
Comment:
if s is absent, all vertices are processed.

adjust vol(id) coe(c)

        When several points in the volume id are "equal" to c, facets containing them will refer in the first of them.
Comments:
1) c = 0 by default.
2) This feature is useful for removing multiple points of a volume (eg the facets through the poles of a ball), which may introduce side effects in the "shading".

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

        Points coincide with those volume id1 volume id2 c near.
1) Useful function to calibrate a volume on another.
2) k =0.25 by default.

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

        Z points of volume id1are changed according to the formula:
z -= (cr * r + cv * v + cb * b) / 3
with (r,v,b) = average color of the image in a window with the neighbors of this point.
Options:
illum:each point is processed color image id2.
coe(c): displacement are multiplied by c * r, where = radius of the mesh passing through the treated (if volume is isomorphic to a grid).
Comments:
1) Default automatic antialiasing is performed in a window containing the neighbors of each vertex.
2) adjust vol image alias(a) can control the size of the window:
a < 0: automatic ntialiasing (by default).
a = 0:no antialiasing.
a > 0: Window size a.
hsv: z points of volume id1are changed according to the formula:
z -= (ct * t + cs * s + cv * v) / 3
with (t,s,v) = average (hue,saturation,value) of image id2 in a window containing the neighbors of this point.
limit: the volume is adjuste in the image window containing the pixels whose color is different from that of the background.
precision(eps): the comparison is made with a tolerance of eps.
vertex(s): only the points s will be processed.
Example:
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;
        the coordinates of the volume 1 are changer according to the formulas:
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
        The points of the volume are moved along their normal:
(cr * r + cv * v + cb * b) / 3
adjust("foo") vol image
        the coordinates of the volume 1 are changer according to the user function name foo where you can use the following commands:
p = poi: retrieves the coordinates of the point space displayed.
k = illum: retrieves the color (r,v,b) of the point.
t = hsv(k): retrieves the(h,s,v) of the point.
p = fonction(p,k): calculates the new position.
poi(p): validates this position.

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

        adjust_vol_image_utilisateur function will be executed with the code and c and values v1,v2,.... You will need to modify this function in the file utilb.c and link again anyflo.
Comments:
1) (cr,cv,cb) = (100,100,100) by default.
2) current image is processed by default.
3) This function allows you to "mount" a relief from a 2D image.
4) All previous forms are combined.
5) Use:
build an image (synthesized or digitized).
build a volume (preferably a thin grid view face).
Invoke adjust vol image.
Exemples:
adjust(100,50,-50) vol(1) image;
adjust(100,70,40) vol(1) illum limit vertex[12,120] image(1);

See also:

generate genetic adjust