63 for (std::vector<DLY_TETRA*>::iterator it=
lsttet.begin();it!=
lsttet.end();it++)
64 if ((*it)==tet)
return 1;
return 0;
83 if (
lsttet[i]->get_feuille()==1) ok=1;
85 if (i>=
lsttet.size())
return NULL;
98 double xyz1[3],xyz2[3];
110 dxyz[0]=xyz2[0]-xyz1[0];
111 dxyz[1]=xyz2[1]-xyz1[1];
112 dxyz[2]=xyz2[2]-xyz1[2];
113 double tab[pas+1],t[pas+1];
114 for (
int i=0;i<pas;i++)
117 double tii=1.0*(i+1)/pas;
120 double tgauss1=0.7886751345*tii+0.2113248654*ti;
122 xyz[0]=xyz1[0]+tgauss1*(xyz2[0]-xyz1[0]);
123 xyz[1]=xyz1[1]+tgauss1*(xyz2[1]-xyz1[1]);
124 xyz[2]=xyz1[2]+tgauss1*(xyz2[2]-xyz1[2]);
126 metrique->
evaluer(xyz,tenseur);
127 double val1=
sqrt(dxyz[0]*dxyz[0]*tenseur[0]+dxyz[0]*dxyz[1]*tenseur[3]+dxyz[0]*dxyz[2]*tenseur[6]+dxyz[1]*dxyz[0]*tenseur[1]+dxyz[1]*dxyz[1]*tenseur[4]+dxyz[1]*dxyz[2]*tenseur[7]+dxyz[2]*dxyz[0]*tenseur[2]+dxyz[2]*dxyz[1]*tenseur[5]+dxyz[2]*dxyz[2]*tenseur[8]);
128 double tgauss2=0.7886751345*ti+0.2113248654*tii;
129 xyz[0]=xyz1[0]+tgauss2*(xyz2[0]-xyz1[0]);
130 xyz[1]=xyz1[1]+tgauss2*(xyz2[1]-xyz1[1]);
131 xyz[2]=xyz1[2]+tgauss2*(xyz2[2]-xyz1[2]);
132 metrique->
evaluer(xyz,tenseur);
133 double val2=
sqrt(dxyz[0]*dxyz[0]*tenseur[0]+dxyz[0]*dxyz[1]*tenseur[3]+dxyz[0]*dxyz[2]*tenseur[6]+dxyz[1]*dxyz[0]*tenseur[1]+dxyz[1]*dxyz[1]*tenseur[4]+dxyz[1]*dxyz[2]*tenseur[7]+dxyz[2]*dxyz[0]*tenseur[2]+dxyz[2]*dxyz[1]*tenseur[5]+dxyz[2]*dxyz[2]*tenseur[8]);
135 l=l+0.5*(tii-ti)*(val1+val2);
142 for(i=0;tab[i]<l/2.;i++);
143 t_demilongueur=t[i]+(t[i+1]-t[i])/(tab[i+1]-tab[i])*(l/2.-tab[i]);
161 double xyz1[3],xyz2[3],x,y,z;
virtual void get_coord(double *xyztmp)
DLY_NOEUD * get_noeud2(void)
int tet_est_present(DLY_TETRA *tet)
DLY_NOEUD * get_noeud1(void)
void insere_lien_tetra(class DLY_TETRA *tet)
double get_longueur(void)
std::vector< class DLY_TETRA * > lsttet
DLY_TETRA * get_tetra_feuille(void)
void change_critere(double crit)
void decoupe_noeud(std::vector< double > &lstpt)
DLY_TETRA * get_tetra(int i)
DLY_SEGMENT(class DLY_NOEUD *no1, class DLY_NOEUD *no2)
double calcul_longueur(class FCT_TAILLE *metrique=NULL, int pas=5, int conserve=1)
virtual void evaluer(double *param, double *resultat)=0
virtual double get_longueur(void) const
double2 sqrt(double2 &val)