## envelope adjust

### envelope(num)adjust vol(id)

Returns the property **envelope adjust** number **num** (1 default)
of volume **id**.
### envelope(0)adjust vol(id)=a,a1,...,an,b1,...,bn

Adds a property **envelope adjust** to volume **id**.

**Note**:

if the volume **id** if of type envelope,
when displayed, the vertices number **b1,...,bn** of volume **id**
will be forced to vertices **a1,...,an**
of volume **a**.
### envelope(num)adjust vol(id)=a,a1,...,an,id,b1,...,bn

Changes the property **envelope adjust** number **num** of volume **id**.
## envelope audio

### envelope(e)audio

Returns the envelope of the signal audio (yes envelope)
is needed).

**Options:**

**sort**: processes the fft of the audio signal
(yes sort) is needed).
## envelope interpol

### envelope(num)interpol vol(id)

Returns the property **envelope interpol** number **num** (1 default)
of volume **id**.
### envelope(0)interpol vol(id)=a,va, b,vb, v,c

Adds a property **envelope interpol** to volume **id**.

**Note**:

if the volume **id** if of type envelope,
when displayed, the point number **v** of volume **id**
will be forced to

**c*(poi(va)vol(a)) + (1-c)*(poi(vb)vol(b))**

c=0.5 by default.
### envelope(num)interpol vol(id)=a,va, b,vb, v,c

Changes the property **envelope interpol** number **num** of volume **id**.
## envelope line

### envelope line(x1,y1,z1,x2,y2,z2,...)

Returns the 3D convex hull of the cloud of points (xi, yi, zi).

**Options:**

**precision(n)**:Returns the 3D convex hull of the cloud of points (xi, yi, zi),
concavities are much better detected that **n** is large.
## envelope vertex

### envelope vertex(s1)vol(id)

Returns ´envelope vertex´ property of vertex **s1** of volume **id**.
### envelope vertex(s1)vol(id)=s2,num2

Changes this property.

**Note:**

vertex numbered **s1** of volume **id** will be forced to vertex numbered **s2**
of volume numbered **num2**.
## envelope memory

### envelope(n)memory(id)

Returns the envelope of memory **id** with precision **n**.
## envelope var

### envelope(n)var(v_{1},v_{2},...)

Returns envelope with precision **n** of signal **v**_{i}.
## envelope vol

### envelope(id0)vol(id1,id2,...)

Allows building volume **id0** type rev wrapping the best way volumes
**(id1,id2,...)** by the method of the virtual laser.

If volume **id0** exists and is type grid
(ball, geod, grid,
rev, pipe),
his vertices will be springs of radius aiming the center of gravity of his y sections.

Created if does not exist.

By default:

Surface of revolution (24 x sections, 12 y sections, radius 100 and axis **Oy**.

Following options allow precising these parameters:

**Options:**

**ang(a,a0)**: a = opening angle (2*PI default), a0 = origin angle (0 default).

**axis(x,y,z)**: cylinder axis is (x,y,z) (0,1,0 defult).

**ball**: intersection tests are made on bounding ablls (faster but less precis).

**coe(c)**: takes off the envelope by **c** (c=1 default).

**dup**:duplicates points of springs surface (can be displayed by
displ vol dup).

**line(x1,y1,z1, x2,y2,z2, ...)**: the cylinder is replaced by a surface of type
geod, the geodesics are circles radius **r**** normal to the line
(x1,y1,z1, x2,y2,z2, ...).
**

**poi(x,y,z)**: axis origin (automatically computed by default).

**radius(r)**: geodidics radius (automatically computed by default).

**secx(nx)**: nx x sections.

**secy(ny)**: ny y sections.

**Notes:**

1)
The intersection calculs are a lot heavy, this commande is not effective in real time,
but can be employed to precalculate a bounding surface, see an example in function **VALIDER()**
of file demo1_envelope.func

2) For good intersection detection the line must be inside to volume and its extremums must not overlap the volume limits.
## See also