1 |
|
5 |
|
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 |
|
|
}
|