ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/m2d_int_triangle.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 2316 byte(s)
Log Message:

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     m2d_int_triangle.c Type:Func
4    
5     un point est il dans le triangle
6    
7     Date de creation : Wed May 1 18:21:18 1996
8    
9     Derniere version : Tue Apr 22 12:25:16 1997
10    
11    
12    
13    
14     Vincent FRANCOIS
15    
16     *****************************************************************/
17    
18    
19    
20    
21    
22     /**************************/
23     /* include */
24     #include <stdio.h>
25     #include <math.h>
26     #include "const.h"
27     #include "memoire.h"
28     #include "struct.h"
29     #include "prototype.h"
30    
31     /**************************/
32     /* variables globales */
33     extern struct environnement env;
34     extern struct s_mesh *mesh;
35    
36    
37    
38    
39     /**************************/
40     /* programme principal */
41    
42     int m2d_int_triangle(int n1,int n2,int n3,int n)
43     {
44     struct s_noeud *ac_no1,*ac_no2,*ac_no3,*ac_no;
45     float u1,u2,u3,u4,v1,v2,v3,v4;
46     float eps,delta,du,dv;
47     float xsi,eta;
48    
49    
50     ac_no1=ADRESSE(n1,noeud,mesh->);
51     ac_no2=ADRESSE(n2,noeud,mesh->);
52     ac_no3=ADRESSE(n3,noeud,mesh->);
53     ac_no=ADRESSE(n,noeud,mesh->);
54     if (mesh->rev_u!=0.) du=0.5*mesh->rev_u-ac_no1->u; else du=0.;
55     if (mesh->rev_v!=0.) dv=0.5*mesh->rev_v-ac_no1->v; else dv=0.;
56     eval_decale(&u1,du,ac_no1->u,U);
57     eval_decale(&v1,dv,ac_no1->v,V);
58     eval_decale(&u2,du,ac_no2->u,U);
59     eval_decale(&v2,dv,ac_no2->v,V);
60     eval_decale(&u3,du,ac_no3->u,U);
61     eval_decale(&v3,dv,ac_no3->v,V);
62     eval_decale(&u4,du,ac_no->u,U);
63     eval_decale(&v4,dv,ac_no->v,V);
64     eps=0.0001;
65     delta=(u2-u1)*(v3-v1)-(v2-v1)*(u3-u1);
66     if (EGAL(delta,0.0,eps)) return(0);
67     xsi=1.0/delta*((v3-v1)*(u4-u1)-(u3-u1)*(v4-v1));
68     eta=1.0/delta*((u2-u1)*(v4-v1)-(v2-v1)*(u4-u1));
69     if((eta > eps) && (xsi > eps) && ((eta+xsi) < 1.0-eps)) return(1);
70     else return(0);
71    
72    
73    
74     }