1 |
francois |
283 |
|
2 |
|
|
|
3 |
|
|
#include <stdio.h> |
4 |
|
|
#include "m3d_struct.h" |
5 |
|
|
#include "m3d_const.h" |
6 |
|
|
#include "m3d_hotes.h" |
7 |
|
|
#include "prototype.h" |
8 |
|
|
extern GEST_MEM *gest ; |
9 |
|
|
extern int debug ; |
10 |
|
|
struct st_face *m3d_recface2(float *coord,NOEUD *n1,NOEUD *n2,NOEUD *n3) |
11 |
|
|
{ |
12 |
|
|
FACE *courant, *tab_face[4] ; |
13 |
|
|
OBJET *obj ; |
14 |
|
|
OCT *oct ; |
15 |
|
|
CONNEC *connec ; |
16 |
|
|
int i ; |
17 |
|
|
/* rechercher l'octree d'appartenance : on pourrait lier noeud et octree */ |
18 |
|
|
oct = n1->oct ; |
19 |
|
|
if (oct == NULL) |
20 |
|
|
{ |
21 |
|
|
// if (debug) aff_text("erreur lien noeud octree M3D_RECFACE2 \n") ; |
22 |
|
|
return(NULL) ; |
23 |
|
|
} |
24 |
|
|
|
25 |
|
|
/* octree */ |
26 |
|
|
/* recherche parmi les faces de peau */ |
27 |
|
|
if (n1->num < gest->nb_init) |
28 |
|
|
if (n2->num < gest->nb_init) |
29 |
|
|
if (n3->num < gest->nb_init) |
30 |
|
|
{ |
31 |
|
|
obj = oct->lis_obj ; |
32 |
|
|
while (obj !=NULL) |
33 |
|
|
{ |
34 |
|
|
courant = obj->ref;/* adresse de l'adresse de la structure face */ |
35 |
|
|
if (((courant->n1==n1)&&(courant->n2==n2)&&(courant->n3==n3)) || |
36 |
|
|
((courant->n1==n1)&&(courant->n2==n3)&&(courant->n3==n2)) ) |
37 |
|
|
{ |
38 |
|
|
return(courant) ; |
39 |
|
|
} |
40 |
|
|
obj = obj->suivant ;/* passer au suivant dans la liste */ |
41 |
|
|
} |
42 |
|
|
} |
43 |
|
|
/* recherche parmi les tetraedres connectes au noeud */ |
44 |
|
|
connec = n1->lis_con ; |
45 |
|
|
while (connec != NULL) |
46 |
|
|
{ |
47 |
|
|
if ((connec->tetra)->mark != KILLED) |
48 |
|
|
{ |
49 |
|
|
tab_face[0] = (connec->tetra)->face1 ; |
50 |
|
|
tab_face[1] = (connec->tetra)->face2 ; |
51 |
|
|
tab_face[2] = (connec->tetra)->face3 ; |
52 |
|
|
tab_face[3] = (connec->tetra)->face4 ; |
53 |
|
|
for (i=0;i<4;i++) |
54 |
|
|
{ |
55 |
|
|
courant = tab_face[i] ; |
56 |
|
|
if (((courant->n1==n1)&&(courant->n2==n2)&&(courant->n3==n3)) || |
57 |
|
|
((courant->n1==n1)&&(courant->n2==n3)&&(courant->n3==n2)) ) |
58 |
|
|
{ |
59 |
|
|
return(courant) ; |
60 |
|
|
} |
61 |
|
|
} |
62 |
|
|
} |
63 |
|
|
connec = connec->suivant ; |
64 |
|
|
} |
65 |
|
|
return(NULL) ;/* la face n'a pas ete trouve */ |
66 |
|
|
} |