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