1 |
francois |
283 |
#define VECTEUR(vec,vec1,vec2)\ |
2 |
|
|
{\ |
3 |
|
|
vec[0] = vec2[0] - vec1[0] ;\ |
4 |
|
|
vec[1] = vec2[1] - vec1[1] ;\ |
5 |
|
|
vec[2] = vec2[2] - vec1[2] ;\ |
6 |
|
|
} |
7 |
|
|
|
8 |
|
|
#define IS_ALIGNE(in1,in2,ina,inb,inter) \ |
9 |
|
|
{\ |
10 |
|
|
float vec_12[3], vec_ab[3], pv1[3],v1a[3], v1b[3],v2a[3], v2b[3] ;\ |
11 |
|
|
inter = 0 ;\ |
12 |
|
|
VECTEUR(vec_12,(coord + in1), (coord + in2)) \ |
13 |
|
|
VECTEUR(vec_ab,(coord + ina), (coord + inb)) \ |
14 |
|
|
VECTEUR(v1a,(coord + in1), (coord + ina)) \ |
15 |
|
|
VECTEUR(v2a,(coord + in2), (coord + ina)) \ |
16 |
|
|
VECTEUR(v1b,(coord + in1), (coord + inb)) \ |
17 |
|
|
VECTEUR(v2b,(coord + in2), (coord + inb)) \ |
18 |
|
|
pv1[0] = PVECX(vec_12,vec_ab) ;\ |
19 |
|
|
pv1[1] = PVECY(vec_12,vec_ab) ;\ |
20 |
|
|
pv1[2] = PVECZ(vec_12,vec_ab) ;\ |
21 |
|
|
if (PROSCA(pv1,pv1)<eps4)\ |
22 |
|
|
{\ |
23 |
|
|
if (PROSCA(v1a,v2a) < 0.) inter = VRAI ;\ |
24 |
|
|
if (PROSCA(v1b,v2b) < 0.) inter = VRAI ;\ |
25 |
|
|
if (PROSCA(v1a,v1b) < 0.) inter = VRAI ;\ |
26 |
|
|
}\ |
27 |
|
|
} |
28 |
|
|
|
29 |
|
|
#define POINT_TRIANGLE(inp,in1,in2,in3,vn,inter) \ |
30 |
|
|
{\ |
31 |
|
|
float vec_1p[3], vec_2p[3], vec_3p[3], pv1[3], vec_12[3], vec_23[3], vec_31[3] ;\ |
32 |
|
|
inter = 0 ;\ |
33 |
|
|
VECTEUR(vec_12,(coord + in1), (coord + in2)) \ |
34 |
|
|
VECTEUR(vec_23,(coord + in2), (coord + in3)) \ |
35 |
|
|
VECTEUR(vec_31,(coord + in3), (coord + in1)) \ |
36 |
|
|
VECTEUR(vec_1p,(coord + in1), (coord + inp)) \ |
37 |
|
|
VECTEUR(vec_2p,(coord + in2), (coord + inp)) \ |
38 |
|
|
VECTEUR(vec_3p,(coord + in3), (coord + inp)) \ |
39 |
|
|
pv1[0] = PVECX(vec_12,vec_1p) ;\ |
40 |
|
|
pv1[1] = PVECY(vec_12,vec_1p) ;\ |
41 |
|
|
pv1[2] = PVECZ(vec_12,vec_1p) ;\ |
42 |
|
|
if (PROSCA(pv1,vn) > -eps4 ) \ |
43 |
|
|
{\ |
44 |
|
|
pv1[0] = PVECX(vec_23,vec_2p) ;\ |
45 |
|
|
pv1[1] = PVECY(vec_23,vec_2p) ;\ |
46 |
|
|
pv1[2] = PVECZ(vec_23,vec_2p) ;\ |
47 |
|
|
if (PROSCA(pv1,vn) > -eps4 ) \ |
48 |
|
|
{\ |
49 |
|
|
pv1[0] = PVECX(vec_31,vec_3p) ;\ |
50 |
|
|
pv1[1] = PVECY(vec_31,vec_3p) ;\ |
51 |
|
|
pv1[2] = PVECZ(vec_31,vec_3p) ;\ |
52 |
|
|
if (PROSCA(pv1,vn) > -eps4 ) inter = VRAI ;\ |
53 |
|
|
}\ |
54 |
|
|
}\ |
55 |
|
|
} |
56 |
|
|
|