1 |
francois |
283 |
|
2 |
|
|
|
3 |
|
|
#include <stdio.h> |
4 |
|
|
#include "r3d_struct.h" |
5 |
|
|
#include "m3d_const.h" |
6 |
|
|
#include "m3d_hotes.h" |
7 |
|
|
#include "prototype2.h" |
8 |
|
|
extern GEST_MEM *gest_r ; |
9 |
|
|
extern int debug ; |
10 |
|
|
struct st_face *r3d_recface2(float *coord,NOEUD *n1,NOEUD *n2,NOEUD *n3) |
11 |
|
|
{ |
12 |
|
|
FACE *courant, *tab_face[4] ; |
13 |
|
|
CONNEC *connec ; |
14 |
|
|
int i ; |
15 |
|
|
|
16 |
|
|
/* octree */ |
17 |
|
|
/* recherche parmi les faces de peau */ |
18 |
|
|
if (n1->num < gest_r->nb_init) |
19 |
|
|
if (n2->num < gest_r->nb_init) |
20 |
|
|
if (n3->num < gest_r->nb_init) |
21 |
|
|
{ |
22 |
|
|
for (i=0;i<gest_r->nb_2d;i++) |
23 |
|
|
{ |
24 |
|
|
ADRESSE(face,i,courant) |
25 |
|
|
if (((courant->n1==n1)&&(courant->n2==n2)&&(courant->n3==n3)) || |
26 |
|
|
((courant->n1==n1)&&(courant->n2==n3)&&(courant->n3==n2)) ) |
27 |
|
|
{ |
28 |
|
|
return(courant) ; |
29 |
|
|
} |
30 |
|
|
} |
31 |
|
|
} |
32 |
|
|
/* recherche parmi les tetraedres connectes au noeud */ |
33 |
|
|
connec = n1->tete ; |
34 |
|
|
while (connec != NULL) |
35 |
|
|
{ |
36 |
|
|
if ((connec->tetra)->mark != KILLED) |
37 |
|
|
{ |
38 |
|
|
tab_face[0] = (connec->tetra)->face1 ; |
39 |
|
|
tab_face[1] = (connec->tetra)->face2 ; |
40 |
|
|
tab_face[2] = (connec->tetra)->face3 ; |
41 |
|
|
tab_face[3] = (connec->tetra)->face4 ; |
42 |
|
|
for (i=0;i<4;i++) |
43 |
|
|
{ |
44 |
|
|
courant = tab_face[i] ; |
45 |
|
|
if (((courant->n1==n1)&&(courant->n2==n2)&&(courant->n3==n3)) || |
46 |
|
|
((courant->n1==n1)&&(courant->n2==n3)&&(courant->n3==n2)) ) |
47 |
|
|
{ |
48 |
|
|
return(courant) ; |
49 |
|
|
} |
50 |
|
|
} |
51 |
|
|
} |
52 |
|
|
connec = connec->suivant ; |
53 |
|
|
} |
54 |
|
|
return(NULL) ;/* la face n'a pas ete trouve */ |
55 |
|
|
} |