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