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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     eval_fdn1_eps.c Type:Func
4    
5     Calcul de la fonction de densite pour approcher une courbe a epsilon
6    
7     Date de creation : Thu Nov 28 18:50:42 1996
8    
9     Derniere version : Tue Jun 3 13:32:09 1997
10    
11    
12    
13    
14    
15    
16    
17    
18     Vincent FRANCOIS
19    
20     *****************************************************************/
21    
22    
23    
24    
25    
26     /**************************/
27     /* include */
28     #include <stdio.h>
29     #include <string.h>
30     #include <math.h>
31     #include "const.h"
32     #include "struct.h"
33     #include "prototype.h"
34    
35    
36     /**************************/
37     /* variables globales */
38     extern struct s_param *para;
39     extern struct environnement env;
40     extern struct s_acis *acis;
41    
42     /**************************/
43     /* programme principal */
44    
45     float eval_fdn1_eps(struct s_edge *edge,float t)
46     {
47     struct s_straight *straight;
48     float dens,m[4],facteur1,facteur2;
49     float coord[3],coord2[3],vec[4];
50    
51     if (strcmp(acis->type_entite[edge->curve],"straight-curve")==0)
52     {
53     straight=(struct s_straight *)acis->entity[edge->curve];
54     memcpy(vec,straight->param->dir,3*sizeof(float));
55     vec[0]=vec[0]*edge->t2;
56     vec[1]=vec[1]*edge->t2;
57     vec[2]=vec[2]*edge->t2;
58     NORME(vec);
59     return(vec[3]*10000.);
60     }
61     eval_edge(edge,t,DERIVE_SECONDE,coord2);
62     eval_edge(edge,t,DERIVE,coord);
63     facteur1=(coord[0]*coord[0]+coord[1]*coord[1]+coord[2]*coord[2]);
64     facteur2=(coord2[0]*coord[0]+coord2[1]*coord[1]+coord2[2]*coord[2])/facteur1/facteur1/2.;
65     m[0]=coord2[0]/facteur1-coord[0]*facteur2;
66     m[1]=coord2[1]/facteur1-coord[1]*facteur2;
67     m[2]=coord2[2]/facteur1-coord[2]*facteur2;
68     NORME(m);
69     if (env.relatif==0) dens=8.*env.epsilon/m[3];
70     else dens=8.*env.epsilon/m[3]/m[3];
71     dens=(float)sqrt((double)dens);
72     return(dens);
73     }