1 |
francois |
283 |
|
2 |
|
|
#include <stdio.h> |
3 |
|
|
#include <math.h> |
4 |
|
|
#include "m3d_struct.h" |
5 |
|
|
#include "m3d_const.h" |
6 |
|
|
#include "m3d_hotes.h" |
7 |
|
|
#include "m3d_erreur.h" |
8 |
|
|
#include "prototype.h" |
9 |
|
|
float m3d_cal2d(float *coord,int i1,int i2,int i3) |
10 |
|
|
{ |
11 |
|
|
double vec_i1i2[3],vec_i1i3[3],vec_i2i3[3] ; |
12 |
|
|
double d12,d13, d23 ; |
13 |
|
|
double dmax, crit, p ; |
14 |
|
|
float crits ; |
15 |
|
|
|
16 |
|
|
dmax = -1. ; |
17 |
|
|
vec_i1i2[0] = coord[x(i2)]-coord[x(i1)] ; |
18 |
|
|
vec_i1i2[1] = coord[y(i2)]-coord[y(i1)] ; |
19 |
|
|
vec_i1i2[2] = coord[z(i2)]-coord[z(i1)] ; |
20 |
|
|
d12 = PROSCA(vec_i1i2,vec_i1i2) ; |
21 |
|
|
d12 = sqrt(d12) ; |
22 |
|
|
dmax = max(dmax,d12) ; |
23 |
|
|
|
24 |
|
|
vec_i1i3[0] = coord[x(i3)]-coord[x(i1)] ; |
25 |
|
|
vec_i1i3[1] = coord[y(i3)]-coord[y(i1)] ; |
26 |
|
|
vec_i1i3[2] = coord[z(i3)]-coord[z(i1)] ; |
27 |
|
|
d13 = PROSCA(vec_i1i3,vec_i1i3) ; |
28 |
|
|
d13 = sqrt(d13) ; |
29 |
|
|
dmax = max(dmax,d13) ; |
30 |
|
|
|
31 |
|
|
vec_i2i3[0] = coord[x(i3)]-coord[x(i2)] ; |
32 |
|
|
vec_i2i3[1] = coord[y(i3)]-coord[y(i2)] ; |
33 |
|
|
vec_i2i3[2] = coord[z(i3)]-coord[z(i2)] ; |
34 |
|
|
d23 = PROSCA(vec_i2i3,vec_i2i3) ; |
35 |
|
|
d23 = sqrt(d23) ; |
36 |
|
|
dmax = max(dmax,d23) ; |
37 |
|
|
|
38 |
|
|
p = 0.5 * (d12 + d13 + d23) ; |
39 |
|
|
|
40 |
|
|
crit = (p - d12) * (p - d13) * (p - d23)/ p ; |
41 |
|
|
crit = sqrt(crit) ; |
42 |
|
|
crit = crit /dmax ; |
43 |
|
|
crit = crit * 3.464101614 ; |
44 |
|
|
crits = (float)crit ; |
45 |
|
|
return(crits) ; |
46 |
|
|
} |