Changeset 21791
- Timestamp:
- 07/13/17 16:09:13 (8 years ago)
- Location:
- issm/trunk-jpl/src/c/bamg
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/bamg/AdjacentTriangle.cpp
r18064 r21791 34 34 } 35 35 /*}}}*/ 36 Icoor2& AdjacentTriangle::det() const {/*{{{*/36 long long & AdjacentTriangle::det() const {/*{{{*/ 37 37 return t->det; 38 38 } -
issm/trunk-jpl/src/c/bamg/AdjacentTriangle.h
r16233 r21791 37 37 AdjacentTriangle Adj() const; 38 38 BamgVertex* EdgeVertex(const int & i) const; 39 Icoor2& det() const;39 long long& det() const; 40 40 }; 41 41 } -
issm/trunk-jpl/src/c/bamg/BamgVertex.cpp
r21623 r21791 157 157 double delta=Norme2_2(Xmove); 158 158 159 Icoor2deta[3];159 long long deta[3]; 160 160 I2 IBTh = BTh.R2ToI2(PNew); 161 161 -
issm/trunk-jpl/src/c/bamg/ListofIntersectionTriangles.cpp
r18064 r21791 193 193 Triangle *tbegin, *t; 194 194 195 Icoor2deta[3], deti,detj;195 long long deta[3], deti,detj; 196 196 double ba[3]; 197 197 int ifirst=-1,ilast; … … 199 199 int ocut,i,j,k=-1; 200 200 // int OnAVertices =0; 201 Icoor2dt[3];201 long long dt[3]; 202 202 I2 a = Bh.R2ToI2(A) ,b= Bh.R2ToI2(B);// compute the Icoor a,b 203 203 I2 vi,vj; … … 356 356 k = OppositeVertex[ocut]; 357 357 358 Icoor2detbij = bamg::det((*t)[i],(*t)[j],b);358 long long detbij = bamg::det((*t)[i],(*t)[j],b); 359 359 360 360 if (detbij >= 0) { //we find the triangle contening b -
issm/trunk-jpl/src/c/bamg/Mesh.cpp
r21629 r21791 1049 1049 } 1050 1050 /*}}}*/ 1051 void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3){/*{{{*/1051 void Mesh::AddVertex( BamgVertex &s,Triangle* t, long long* det3){/*{{{*/ 1052 1052 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Add)*/ 1053 1053 // ------------------------------- … … 1068 1068 /*Intermediaries*/ 1069 1069 Triangle* tt[3]; //the three triangles 1070 Icoor2det3local[3]; //three determinants (integer)1070 long long det3local[3]; //three determinants (integer) 1071 1071 int nbzerodet =0; //number of zeros in det3 1072 1072 int izerodet=-1; //egde containing the vertex s … … 1079 1079 1080 1080 //determinant of t 1081 Icoor2detOld=t->det;1081 long long detOld=t->det; 1082 1082 1083 1083 /* infvertexindex = index of the infinite vertex (NULL) … … 2805 2805 2806 2806 //Find the triangle in which newvertex is located 2807 Icoor2det3[3];2807 long long det3[3]; 2808 2808 Triangle* tcvi = TriangleFindFromCoord(newvertex->i,det3); //(newvertex->i = integer coordinates) 2809 2809 … … 2832 2832 long i; 2833 2833 long NbSwap=0; 2834 Icoor2det3[3];2834 long long det3[3]; 2835 2835 2836 2836 //number of new points … … 3017 3017 3018 3018 I2 a = R2ToI2(A); 3019 Icoor2deta[3];3019 long long deta[3]; 3020 3020 Triangle * t =TriangleFindFromCoord(a,deta); 3021 3021 if (t->det <0) { // outside … … 3476 3476 for (int icount=2; icount<nbvb; icount++) { 3477 3477 BamgVertex *vi = orderedvertices[icount]; 3478 Icoor2det3[3];3478 long long det3[3]; 3479 3479 Triangle *tcvi = TriangleFindFromCoord(vi->i,det3); 3480 3480 quadtree->Add(*vi); … … 3893 3893 long iv = nbvold; 3894 3894 long NbSwap = 0; 3895 Icoor2det3[3];3895 long long det3[3]; 3896 3896 for (int i=nbvold;i<nbv;i++) {// for all the new point 3897 3897 BamgVertex & vi = vertices[i]; … … 3934 3934 } 3935 3935 /*}}}*/ 3936 Triangle * Mesh::TriangleFindFromCoord(const I2 & B, Icoor2det3[3], Triangle *tstart) const {/*{{{*/3936 Triangle * Mesh::TriangleFindFromCoord(const I2 & B,long long det3[3], Triangle *tstart) const {/*{{{*/ 3937 3937 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindTriangleContening)*/ 3938 3938 … … 3963 3963 } 3964 3964 3965 Icoor2detop ;3965 long long detop ; 3966 3966 3967 3967 /*initialize number of test triangle*/ … … 4748 4748 } 4749 4749 int kkk=0; 4750 Icoor2IJ_IA,IJ_AJ;4750 long long IJ_IA,IJ_AJ; 4751 4751 AdjacentTriangle edge(t,OppositeEdge[k]); 4752 4752 for (;;edge = dir >0 ? Next(Adj(Next(edge))) : Previous(Adj(Previous(edge)))) { … … 4792 4792 // we turn around a in the direct direction 4793 4793 4794 Icoor2det2 = v2 ? det(*v2,a,b): -1 , det1;4794 long long det2 = v2 ? det(*v2,a,b): -1 , det1; 4795 4795 if(v2) // normal case 4796 4796 det2 = det(*v2,a,b); … … 4819 4819 _error_("!v1 || !v2"); 4820 4820 } 4821 Icoor2detss = 0,l=0;4821 long long detss = 0,l=0; 4822 4822 while ((SwapForForcingEdge( va, vb, tc, detss, det1,det2,NbSwap))) 4823 4823 if(l++ > 10000000) { … … 4853 4853 } 4854 4854 /*}}}*/ 4855 void swap(Triangle *t1,short a1, Triangle *t2,short a2, BamgVertex *s1,BamgVertex *s2, Icoor2 det1,Icoor2det2){ /*{{{*/4855 void swap(Triangle *t1,short a1, Triangle *t2,short a2, BamgVertex *s1,BamgVertex *s2,long long det1,long long det2){ /*{{{*/ 4856 4856 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/ 4857 4857 // -------------------------------------------------------------- … … 4897 4897 } // end swap 4898 4898 /*}}}*/ 4899 int SwapForForcingEdge(BamgVertex * & pva ,BamgVertex * & pvb ,AdjacentTriangle & tt1, Icoor2 & dets1, Icoor2 & detsa,Icoor2& detsb, int & NbSwap) {/*{{{*/4899 int SwapForForcingEdge(BamgVertex * & pva ,BamgVertex * & pvb ,AdjacentTriangle & tt1,long long & dets1, long long & detsa,long long & detsb, int & NbSwap) {/*{{{*/ 4900 4900 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SwapForForcingEdge)*/ 4901 4901 // l'arete ta coupe l'arete pva pvb … … 4918 4918 BamgVertex & s2= (*t2)[OppositeVertex[a2]]; 4919 4919 4920 Icoor2dets2 = det(*pva,*pvb,s2);4921 Icoor2det1=t1->det , det2=t2->det ;4922 Icoor2detT = det1+det2;4920 long long dets2 = det(*pva,*pvb,s2); 4921 long long det1=t1->det , det2=t2->det ; 4922 long long detT = det1+det2; 4923 4923 if ((det1<=0 ) || (det2<=0)){ 4924 4924 _error_("(det1<=0 ) || (det2<=0)"); … … 4927 4927 _error_("(detsa>=0) || (detsb<=0)"); 4928 4928 } 4929 Icoor2ndet1 = bamg::det(s1,sa,s2);4930 Icoor2ndet2 = detT - ndet1;4929 long long ndet1 = bamg::det(s1,sa,s2); 4930 long long ndet2 = detT - ndet1; 4931 4931 4932 4932 int ToSwap =0; //pas de swap -
issm/trunk-jpl/src/c/bamg/Mesh.h
r21629 r21791 38 38 39 39 R2 pmin,pmax; // extrema 40 double coefIcoor; // coef to integer Icoor1;40 double coefIcoor; // coef to integer 41 41 ListofIntersectionTriangles lIntTria; 42 42 … … 76 76 I2 R2ToI2(const R2 & P) const; 77 77 R2 I2ToR2(const I2 & P) const; 78 void AddVertex(BamgVertex & s,Triangle * t, Icoor2* =0) ;78 void AddVertex(BamgVertex & s,Triangle * t,long long * =0) ; 79 79 void Insert(bool random); 80 80 void Echo(void); … … 103 103 long GetId(const Edge * t) const; 104 104 BamgVertex* NearestVertex(int i,int j) ; 105 Triangle* TriangleFindFromCoord(const I2 & , Icoor2[3],Triangle *tstart=0) const;105 Triangle* TriangleFindFromCoord(const I2 & ,long long [3],Triangle *tstart=0) const; 106 106 void ReadMesh(int* index,double* x,double* y,int nods,int nels); 107 107 void ReadMesh(BamgMesh* bamgmesh, BamgOpts* bamgopts); … … 149 149 void swap(Triangle *t1,short a1, 150 150 Triangle *t2,short a2, 151 BamgVertex *s1,BamgVertex *s2, Icoor2 det1,Icoor2det2);151 BamgVertex *s1,BamgVertex *s2,long long det1,long long det2); 152 152 int SwapForForcingEdge(BamgVertex * & pva ,BamgVertex * & pvb , 153 AdjacentTriangle & tt1, Icoor2& dets1,154 Icoor2 & detsa,Icoor2& detsb, int & nbswap);153 AdjacentTriangle & tt1,long long & dets1, 154 long long & detsa,long long & detsb, int & nbswap); 155 155 int ForceEdge(BamgVertex &a, BamgVertex & b,AdjacentTriangle & taret) ; 156 156 inline AdjacentTriangle Previous(const AdjacentTriangle & ta){ … … 170 170 I2 ia=va,ib=vb,ic=vc; 171 171 I2 ab=ib-ia,bc=ic-ib,ac=ic-ia; 172 Icoor2deta=Det(ab,ac);172 long long deta=Det(ab,ac); 173 173 if (deta <=0) ret = -1; 174 174 else { -
issm/trunk-jpl/src/c/bamg/Triangle.cpp
r21623 r21791 238 238 BamgVertex *s2=t2->vertices[OppositeVertex[a2]]; 239 239 240 Icoor2det1=t1->det , det2=t2->det ;241 Icoor2detT = det1+det2;242 Icoor2detA = Abs(det1) + Abs(det2);243 Icoor2detMin = Min(det1,det2);240 long long det1=t1->det , det2=t2->det ; 241 long long detT = det1+det2; 242 long long detA = Abs(det1) + Abs(det2); 243 long long detMin = Min(det1,det2); 244 244 245 245 int OnSwap = 0; … … 256 256 OnSwap = (Abs(det1) + Abs(det2)) < detA; 257 257 258 Icoor2detMinNew=Min(det1,det2);258 long long detMinNew=Min(det1,det2); 259 259 // if (detMin<0 && (Abs(det1) + Abs(det2) == detA)) OnSwap=BinaryRand();// just for test 260 260 if (! OnSwap &&(detMinNew>0)) { … … 265 265 if(kopt) { 266 266 // critere de Delaunay pure isotrope 267 Icoor2xb1 = sb->i.x - s1->i.x,267 long long xb1 = sb->i.x - s1->i.x, 268 268 x21 = s2->i.x - s1->i.x, 269 269 yb1 = sb->i.y - s1->i.y, -
issm/trunk-jpl/src/c/bamg/Triangle.h
r21623 r21791 21 21 22 22 public: 23 Icoor2det; //Integer determinant (twice its area)23 long long det; //Integer determinant (twice its area) 24 24 union { 25 25 Triangle *link; -
issm/trunk-jpl/src/c/bamg/det.h
r15061 r21791 6 6 namespace bamg { 7 7 8 Icoor2inline det(const I2 &a,const I2 & b,const I2 &c){9 Icoor2bax = b.x - a.x ,bay = b.y - a.y;10 Icoor2cax = c.x - a.x ,cay = c.y - a.y;8 long long inline det(const I2 &a,const I2 & b,const I2 &c){ 9 long long bax = b.x - a.x ,bay = b.y - a.y; 10 long long cax = c.x - a.x ,cay = c.y - a.y; 11 11 return bax*cay - bay*cax; 12 12 } -
issm/trunk-jpl/src/c/bamg/typedefs.h
r15101 r21791 7 7 8 8 /*Integer coordinates types*/ 9 typedef int Icoor1;10 typedef long long Icoor2;11 9 12 10 /*I2 and R2*/ 13 typedef P2< Icoor1,Icoor2> I2;11 typedef P2<int,long long> I2; 14 12 typedef P2<double,double> R2; 15 13 }
Note:
See TracChangeset
for help on using the changeset viewer.