Changeset 2856 for issm/trunk/src/c/Bamgx/objects/Geometry.cpp
- Timestamp:
- 01/15/10 12:26:00 (16 years ago)
- File:
-
- 1 edited
-
issm/trunk/src/c/Bamgx/objects/Geometry.cpp (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Bamgx/objects/Geometry.cpp
r2854 r2856 54 54 throw ErrorException(__FUNCT__,exprintf("NbRef>0")); 55 55 } 56 if(verbosity>9)57 cout << "DELETE ~Geometry "<< this << endl;58 56 if(vertices) delete [] vertices;vertices=0; 59 57 if(edges) delete [] edges;edges=0; … … 511 509 GeometricalEdge* on =start,* pon=0; 512 510 // walk with the cos on geometry 513 // cout << P ;514 511 int k=0; 515 512 while(pon != on){ … … 524 521 R2 AP = P-A; 525 522 R2 BP = P-B; 526 // cout << ":: " << on - edges << " " << AB*AP << " " << AB*BP << " " << A << B << endl;527 523 if ( (AB,AP) < 0) 528 524 on = on->Adj[0]; … … 560 556 R2 V0 = v0,V1=v1,V01=V1-V0; 561 557 VertexOnGeom vg0= *v0.on, vg1=*v1.on; 562 if(NbTry) cout << "bug: s==== " << s << " e=" << V0 << " " << V1 << endl;563 558 564 559 // GeometricalEdge * eg0 = e.on,* eg1 = e.on, *eg=NULL; 565 560 GeometricalEdge * eg0=on, *eg1=on; 566 561 R2 Ag=(R2) (*on)[0],Bg=(R2)(*on)[1],AB=Bg-Ag; 567 if(NbTry) cout <<" G edge= " << Ag << Bg << endl << " v edge" << V01 << " v geom " << AB << (V01,AB) <<endl;568 562 int OppositeSens = (V01,AB) < 0; 569 563 int sens0=0,sens1=1; 570 564 if (OppositeSens) 571 565 s=1-s,Exchange(vg0,vg1),Exchange(V0,V1); 572 if(NbTry) cout << "bug: edge = " << v0.r << " -> " << v1.r << endl573 << "sg 0 = " << vg0574 << " on = " << Number(on) << ":" << Ag << Bg << "; "575 << " sg 1= " << vg1576 << "--------------------------------------------" << endl;577 566 while (eg0 != (GeometricalEdge*) vg0 && (*eg0)(sens0) != (GeometricalVertex*) vg0){ 578 567 if (bge<=0) { … … 589 578 goto retry;} 590 579 GeometricalEdge* tmpge = eg0; 591 if(NbTry)592 cout << "bug: --Edge @" << Number(tmpge) << " = "<< Number(eg0) << ":" <<Number(eg0->Adj[0]) << "," <<593 Number(eg0->Adj[1]) <<"," ;594 580 ge[--bge] =eg0 = eg0->Adj[sens0]; 595 581 if (bge<0 || bge>mxe){ … … 597 583 } 598 584 sens0 = 1-( sensge[bge] = tmpge->SensAdj[sens0]); 599 if(NbTry)600 cout << "bug: Edge " << Number(eg0) << " "<< 1-sens0 << " S "601 << Number((*eg0)[1-sens0]) <<":" << Number(eg0->Adj[0]) << ","602 << Number(eg0->Adj[1]) <<"," << endl603 <<Number(eg0)<< (*eg0)[sens0].r << "v = " << Number((*eg1)(sens0)) << " e = " << eg0 << endl;604 585 } 605 if(NbTry) cout << Number((GeometricalEdge*) vg1) << " " << Number((GeometricalVertex*) vg1) << endl; 606 while (eg1 != (GeometricalEdge*) vg1 && (*eg1)(sens1) != (GeometricalVertex*) vg1) 607 { 586 while (eg1 != (GeometricalEdge*) vg1 && (*eg1)(sens1) != (GeometricalVertex*) vg1) { 608 587 if(tge>=mxe ) { 609 cerr << " --Fatal Error: on the class triangles before call Geometry::ProjectOnCurve" << endl;588 printf("WARNING: on the class triangles before call Geometry::ProjectOnCurve is having issues (isn't it Eric?)\n"); 610 589 NbTry++; 611 590 if (NbTry<2) goto retry; … … 619 598 620 599 GeometricalEdge* tmpge = eg1; 621 if(NbTry)622 cout << "++Edge @" << tmpge << " = " << Number(eg1) <<"%" << Number(eg1->Adj[0]) << ","623 << Number(eg1->Adj[1]) <<"," ;624 600 ge[++tge] =eg1 = eg1->Adj[sens1]; 625 601 sensge[tge]= sens1 = 1-tmpge->SensAdj[sens1]; … … 627 603 throw ErrorException(__FUNCT__,exprintf("(tge<0 || tge>mxe)")); 628 604 } 629 if(NbTry)630 cout << " Edge " << Number(eg1) << " " << sens1 << " S "631 <<Number((*eg1)[sens1]) <<"%"<< Number(eg1->Adj[0]) << "," << Number(eg1->Adj[1]) <<","632 <<Number(eg1)<< (*eg1)[sens1].r << "v = " << Number((*eg1)(sens1)) << " e = " << Number(eg1) << endl;633 605 } 634 635 if(NbTry) cout << endl;636 606 637 607 … … 643 613 644 614 Real8 sg; 645 // cout << " " << Number(on) << " " << Number(eg0) << " " << Number(eg1) << " " ;646 615 if (eg0 == eg1) { 647 616 register Real8 s0= vg0,s1=vg1; 648 617 sg = s0 * (1.0-s) + s * s1; 649 // cout <<" s0=" << s0 << " s1=" << s1650 // << " s = " << s << " sens= " << OppositeSens << "\t\t sg = " << sg << endl ;651 618 on=eg0;} 652 619 else { 653 620 R2 AA=V0,BB; 654 621 Real8 s0,s1; 655 656 //cout << endl << "s= " << s << Number(eg0) << " " << (Real8) vg0 << " "657 // << Number(eg1) << " " << (Real8) vg1 << V0 << V1 << " Interpol = "658 // << V0*(1-s)+V1*s << ";;; " << endl;659 622 int i=bge; 660 623 Real8 ll=0; … … 665 628 BB = (*ge[i])[sensge[i]]; 666 629 lge[i]=ll += Norme2(AA-BB); 667 // cout << " ll " << i << BB << ll << " " <<sensge[i] <<" on = " <<668 // Number(ge[i]) << " sens= " << sensge[i] ;669 630 AA=BB ;} 670 631 lge[tge]=ll+=Norme2(AA-V1); 671 // cout << " ll " << tge << " " << ll << sensge[tge]672 // <<" on = " << Number(ge[tge]) << " sens= " << sensge[tge] << endl;673 632 // search the geometrical edge 674 633 if (s>1.0){ … … 691 650 692 651 s=(ls-l0)/(l1-l0); 693 // cout << "on =" << Number(on) << sens0 << sens1 << "s0 " << s0 << " s1 ="694 // << s1 << " l0 =" << l0 << " ls= " << ls << " l1= " << l1 << " s= " << s;695 652 sg = s0 * (1.0-s) + s * s1; 696 653 } … … 699 656 } 700 657 V.r= on->F(sg); 701 // if (eg0 != eg1)702 // cout << "----- sg = "<< sg << " Sens =" << OppositeSens << " Edge = "703 // << Number(on) <<" V=" << V << endl;704 658 GV=VertexOnGeom(V,*on,sg); 705 659 return on; … … 710 664 long int verbosity=0; 711 665 712 if (verbosity>20)713 cout << "Geometry::AfterRead()" << nbv << " " << nbe << endl;714 666 Int4 i,k=0; ; 715 667 int jj; // jj in [0,1] … … 771 723 } 772 724 773 if(verbosity>7)774 for (i=0;i<nbv;i++)775 if (vertices[i].Required())776 cout << " The geo vertices " << i << " is required" << endl;777 778 725 for (i=0;i<nbv;i++) hv[i]=-1;// empty list 779 726 … … 785 732 } 786 733 eangle[i] = atan2(v10.y,v10.x) ; // angle in [ -Pi,Pi ] 787 if(verbosity>9)788 cout << " angle edge " << i <<" " << eangle[i]*180/Pi<< v10<<endl;789 734 for (jj=0;jj<2;jj++) 790 735 { // generation of list … … 826 771 float angle2= !j2 ? OppositeAngle(eangle[i2]) : eangle[i2]; 827 772 float da12 = Abs(angle2-angle1); 828 if(verbosity>9) 829 cout <<" check angle " << i << " " << i1 << " " << i2 << " " << 180*(da12)/Pi 830 << " " << 180*MaximalAngleOfCorner/Pi << vertices[i] << endl; 831 832 if (( da12 >= MaximalAngleOfCorner ) 833 && (da12 <= 2*Pi -MaximalAngleOfCorner)) { 773 if (( da12 >= MaximalAngleOfCorner ) && (da12 <= 2*Pi -MaximalAngleOfCorner)) { 834 774 vertices[i].SetCorner() ; 835 if(verbosity>7) 836 cout << " The vertex " << i << " is a corner (angle) " 837 << 180*(da12)/ Pi<< " " << 180*MaximalAngleOfCorner/Pi << endl;} 838 // if the ref a changing then is SetRequired(); 839 840 if (edges[i1].flag != edges[i2].flag || edges[i1].Required()) 841 { 842 vertices[i].SetRequired(); 843 if(verbosity>7) 844 cout << " The vertex " << i << " is Required the flag change (crack or equi, or require)" << endl;} 845 846 if (edges[i1].ref != edges[i2].ref) { 847 vertices[i].SetRequired(); 848 if(verbosity>7) 849 cout << " The vertex " << i << " is Required ref" << endl;} 850 } ; 775 } 776 // if the ref a changing then is SetRequired(); 777 if (edges[i1].flag != edges[i2].flag || edges[i1].Required()){ 778 vertices[i].SetRequired(); 779 } 780 if (edges[i1].ref != edges[i2].ref) { 781 vertices[i].SetRequired(); 782 } 783 } 851 784 852 785 if(ord != 2) { 853 786 vertices[i].SetCorner(); 854 if(verbosity>7)855 cout << " the vertex " << i << " is a corner ordre = " << ord << endl;856 787 } 857 788 // close the liste around the vertex … … 875 806 edges[i1].Adj[j1] = edges + i; 876 807 edges[i1].SensAdj[j1] = jj; 877 if (verbosity>10)878 cout << " edges. Adj " << i1 << " " << j1 << " <--- " << i << " " << jj << endl;879 808 } 880 809 … … 894 823 ltg = Norme2(tg); 895 824 tg = tg *(lAB/ltg),ltg=lAB; 896 /*897 if(edges[i].ref >=4)898 cout << " tg " << tg.x << " "<< tg.y << " " << edges[i].v[1-jj]->r << edges[i].Adj[jj]->v[1-edges[i].SensAdj[jj]]->r << " y-y = "899 << edges[i].v[1-jj]->r.y -edges[i].Adj[jj]->v[1-edges[i].SensAdj[jj]]->r.y << endl;900 */901 825 } 902 826 … … 908 832 if ( (tg,AB) < 0) 909 833 tg = -tg; 910 //if(edges[i].ref >=4) cout << " tg = " << tg << endl;911 834 edges[i].tg[jj] = tg; 912 835 } // for (jj=0;jj<2;jj++) … … 915 838 if (ltg2[1]!=0) edges[i].SetTgB(); 916 839 } // for (i=0;i<nbe;i++) 917 918 if(verbosity>7)919 for (i=0;i<nbv;i++)920 if (vertices[i].Required())921 cout << " The geo vertices " << i << " is required " << endl;922 840 923 841 for (int step=0;step<2;step++) … … 959 877 960 878 }// for(;;) 961 if(verbosity>10 && curves==0) cout << NbOfCurves <<" curve : nb edges= "<< nee<< endl;962 879 NbOfCurves++; 963 880 if(level) { 964 if(verbosity>4)965 cout << " Warning: Curve "<< NbOfCurves << " without required vertex "966 << "so the vertex " << Number(a) << " become required " <<endl;967 881 a->SetRequired(); 968 882 } … … 999 913 } 1000 914 1001 if(verbosity>3)1002 cout << " End ReadGeometry: Number of curves in geometry is " << NbOfCurves <<endl;1003 if(verbosity>4)1004 for(int i=0;i<NbOfCurves ;i++)1005 {1006 cout << " Curve " << i << " begin e=" << Number(curves[i].be) << " k=" << curves[i].kb1007 << " end e= " << Number(curves[i].ee) << " k=" << curves[i].ke << endl;1008 }1009 915 delete []ev; 1010 916 delete []hv;
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/trac/issm/chrome/common/trac_banner.png)