collision


détection des collisions

Principe
anc
ball
coe
collision
force
func
normal
poi
radius
vol
vol_near
vol_vol
Voir aussi

Principe:

En animation dynamique cette commande permet de gérer les collisions entre objets. Si yes dynamic est actif et si les objets sont munis de masses certains effets peuvent être obtenus (rebond, glissement, frottement, etc..).
Il est nécessaire d´activer les collisions par yes collision.
Voir par exemple la fonction set_anc() du fichier demo1_collision.func.

collision anc

collision anc vol(id1)

       Retourne la propriété collision anc du volume id1.

collision anc vol(id1)=id2

       Change cette propriété.
Remarques: Si id2 appartient à une structure d´ ancrage de racine id0
le volume id0 sera attiré par le volume id1 avec une force f = 0.5 * (dist(id1,id2).
Options:
id2,s1,s2: le sommet s2 du volume id2 coincidera avec le sommet v1 du volume id1 (CG par défaut).

collision anc coe vol(id1)

       Retourne la propriété collision anc coe du volume id1.

collision anc coe vol(id1)=c

       Change cette propriété.
Remarques:
la force est multipliée par c.
pour éviter un tremblement donner une viscosité < 0 à cette force, par exemple:
       force vol(id0)=0,0,0,-.5;

collision ball

collision ball vol(id1)

       Retourne la propriété collision ball du volume id.

collision ball vol(id1)=x,y,z

       Modifie cette propriété.
Remarque:
vol (id) est la racine d´une structure d´ ancrage (par exemple le bassin d´un corps).
Définit un obstacle de type ball de centre (x, y, z) et de rayon radius(r).
Plusieurs obstacles de type ball peuvent être définis sur le m&ecirec;me volume id par:
collision poi vol(id)=x1,y1,z1, x2,y2,z2, ...
collision radius vol(id)=r1,r2, ...;

collision coe

collision coe vol(id)

       Retourne la propriété collision coe du volume id.

collision coe vol(id)=reb,fric

       Change cette propriété.
Remarques:
reb: coefficient de rebound changeant la vitesse après le choc (entre 0 et 1).
reb: coefficient de friction, le rebond n´a lieu que si (module(speed) > fric (25 par défaut).

collision collision

collision collision vol(id)

       Retourne la propriété collision collision du volume id.

collision collision vol(id)=id1,id2,...

       Change cette propriété.
Remarque:
id1,id2,...: sont les identificateurs des volumes qui réagissent en cas de collision (tous par défaut).

collision force

collision force vol(id)

       Retourne la propriété force du volume id.

collision force vol(id)=f,c

       Change cette propriété.
Remarque:
f: module la réaction (0 par défaut).
c: coefficient de transmission (0 par défaut).
-1,.75 sont de bonnes valeurs.

collision func

collision func vol(id)

       Retourne la propriété collision func duvolume id.

collision func vol(id)="fff"

       Change cette propriété.
Remarquee:
fff est le nom d´une fonction anyflo qui sera exécutée à chaque collision de la structure ancrée de racine le volume id.
Une telle fonction a un paramètre formel id.

collision normal

collision normal vol(id)

       Retourne la propriété collision normal du volume id.

collision normal vol(id)=nx,ny,nz

       Change cette propriété.
Notes:
(nx,ny,nz) est la normale au plan passant par le point colliisin poi vol(id) (0,-1,0 par défaut).

collision poi

Permet à une structure ancrée de "marcher" (par exemple un corps) sur un sol.

collision poi vol(id)

       Retourne la propriété collision poi du volume id.

collision poi vol(id)=x,y,z

       Change cette propriété.
Remarques:
vol (id) est la racine d´une structure ancrée (for example le bassin d´un corps).
Définit un plan horizontal passant par le point (x, y, z), pour changer son orientation voir collision normal vol(id).
Des plans de collisions multiple d´un même volume id peuvent être définis par:
collision coe vol(id)=reb1,fri1,reac1, reb2,fri2,reac2...;
collision normal vol(id)=nx1,ny1,nz1, nx2,ny2,nz2, ...;
collision poi vol(id)=x1,y1,z1, x2,y2,z2, ...;


Exemple:
collision coe vol(id)=1,10,.25;
collision normal vol(id)=0,-1,0; collision poi vol(id)=0,0,0;

collision radius

collision radius vol(id1)

       Retourne la propriété collision ball du volume id.

collisionradius vol(id1)=r

       Modifie cette propriété.
Remarque:
le volume (id) a une propriété collision ball, r est le rayon de la balle.

collision sphere

collision sphere vol(id)

        Retourne la propriété collision sphere du volume id de type particle.

collision sphere vol(id)=x,y,z,r1,r2,c

        Change cette propriété.
Remarque:
si yes collision, yes dynamic et yes particle sont actifs, les points du volume id rebondiront, avec un coefficient c (1 par défaut), sur les sphères de centre (x,y,z) et de rayons r1 et r2. br>La direction du rebound varie de 0 (r2) au symétrique à la normale, simulant ainsi un fluide.
r1, r2 > 0: extérieur.
r1, r2 < 0: inérieur.
r1=r2: fluide non compressible.

collision vol

collision vol(id)

        Retourne les informations de collision du volume id:
flag,v,s,x0,y0,z0,x,y,z:
        flag = 1: nouvelle collision
        flag = 2: même collision
        flag = 1: pas de collision
        v = numéro du volume en collision, s = numéro du sommet de v en collision.
        x0,y0,z0 = ancienne position de collision.
        x,y,z = nouvelle position de collision.
Remarque: permet de déterminer le point de contact:
c=collision vol(f);
if(c!=NIL)
{
       vc=c[1];sc=c[2];p=poi(sc)matrix vol(vc);
       ...
}

collision vol near

collision vol(id)near

        Traite les collisions des volumes id entre eux avec les mêmes options que collision vol vol.

collision vol vol

collision vol(id1)vol(id2)

        Traite les collisions du volume id1 sur l´obstacle id2.
Options:
ball: seuls les tests de boules sont activés (rapide mais ne convient que pour des objets approximativement sphériques.
box: seuls les tests de boites sont activés (moins rapide, convient pour des objets dont on a pu déterminer des boites englobantes.
segment: convient pour des objets filaires (c´est à dire réduits à une seule facette de points connectés).
fac: plus lent mais convient pour tout type d´objet, valeur par défaut (sans option).
dist(d): la collision est anticipée de d.
coe(f,v_f,r,v_r,c): si yes dynamic est actif et si les objets sont munis de masses, f=force de rebond, v_f=viscosité de cette, r=force de rotation, v_r=viscosité de cette force, c = coefficient multiplicateur des rayons avec l´option ball.
(0,0,0,0 par défaut, .1,-.01,.01,-.01 sont de bonnes valeurs).
Exemples:
ball ball: les objets et les obstacles sont approximativement sphériques.
segment ball: les objets sont filaires, les obstacles sont approximativement sphériques.
segment segment: les objets et les obstacles sont filaires.
segment fac: les objets sont filaires, les obstacles sont quelconques.
etc..

Voir aussi:

no collision
yes collision
exec collision vol