1 |
|
5 |
|
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_recface(float *coord,NOEUD *n1,NOEUD *n2,NOEUD *n3)
|
11 |
|
|
{
|
12 |
|
|
FACE *courant, *tab_face[4] ;
|
13 |
|
|
CONNEC *connec ;
|
14 |
|
|
int i ;
|
15 |
|
|
/* recherche parmi les faces de peau */
|
16 |
|
|
if (n1->num < gest_r->nb_init)
|
17 |
|
|
if (n2->num < gest_r->nb_init)
|
18 |
|
|
if (n3->num < gest_r->nb_init)
|
19 |
|
|
{
|
20 |
|
|
for (i=0;i<gest_r->nb_2d;i++)
|
21 |
|
|
{
|
22 |
|
|
ADRESSE(face,i,courant)
|
23 |
|
|
if (courant->mark!=KILLED)
|
24 |
|
|
{
|
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 |
|
|
}
|
33 |
|
|
/* recherche parmi les tetraedres connectes au noeud */
|
34 |
|
|
connec = n1->tete ;
|
35 |
|
|
while (connec != NULL)
|
36 |
|
|
{
|
37 |
|
|
if ((connec->tetra)->mark != KILLED)
|
38 |
|
|
{
|
39 |
|
|
tab_face[0] = (connec->tetra)->face1 ;
|
40 |
|
|
tab_face[1] = (connec->tetra)->face2 ;
|
41 |
|
|
tab_face[2] = (connec->tetra)->face3 ;
|
42 |
|
|
tab_face[3] = (connec->tetra)->face4 ;
|
43 |
|
|
for (i=0;i<4;i++)
|
44 |
|
|
{
|
45 |
|
|
courant = tab_face[i] ;
|
46 |
|
|
if (courant->mark!=KILLED)
|
47 |
|
|
{
|
48 |
|
|
if (((courant->n1==n1)&&(courant->n2==n2)&&(courant->n3==n3)) ||
|
49 |
|
|
((courant->n1==n1)&&(courant->n2==n3)&&(courant->n3==n2)) )
|
50 |
|
|
{
|
51 |
|
|
return(courant) ;
|
52 |
|
|
}
|
53 |
|
|
}
|
54 |
|
|
}
|
55 |
|
|
}
|
56 |
|
|
connec = connec->suivant ;
|
57 |
|
|
}
|
58 |
|
|
return(NULL) ;/* la face n'a pas ete trouvee */
|
59 |
|
|
}
|