⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cogpair.cxx

📁 Delaunay三角形的网格剖分程序
💻 CXX
字号:
#include "cogpair.hxx"class cogPairIntersection: public cogPairToSegment{        cogSegment operator()(cogSegment s1,cogSegment s2)        	{if(s1.index()<s2.index()) return s1; return s2;}};CogeometryIntersection::CogeometryIntersection(cogeometry g1, cogeometry g2):CogeometryPair(g1,g2,new cogPairIntersection()){;}class cogPairUnion: public cogPairToSegment{        cogSegment operator()(cogSegment s1,cogSegment s2)        	{if(s1.index()>s2.index()) return s1; return s2;}};CogeometryUnion::CogeometryUnion(cogeometry g1, cogeometry g2):CogeometryPair(g1,g2,new cogPairUnion()){;}class cogPairSplit: public cogPairToSegment{        cogSegment operator()(cogSegment s1,cogSegment s2)                {if(s1 != single) return s1; return s2;}        cogSegment single;public:        cogPairSplit(cogRegion r):single(r){;}};CogeometrySplit::CogeometrySplit(cogeometry _g1,cogRegion _r,cogeometry _g2):CogeometryPair(_g1,_g2,new cogPairSplit(_r)){;}class cogPairOverlay: public cogPairToSegment{        cogSegment operator()(cogSegment s1,cogSegment s2)        	{if(s1 == single) return s1; return s2;}        cogSegment single;public:        cogPairOverlay(cogRegion s):single(s){;}};CogeometryOverlay::CogeometryOverlay(cogeometry _g1,cogRegion _r,cogeometry _g2):CogeometryPair(_g1,_g2,new cogPairOverlay(_r)){;}cogIndex   CogeometryPair::Point(cogPoint& s) const{ g1->Point(s); cogRegion r1=s.segment().region(); g2->Point(s); cogRegion r2=s.segment().region(); s.segment() = region(r1,r2); return cogRCRegionFound;}cogIndex   CogeometryPair::BoundaryCondition(cogFlag1& flag) const{  g1->BoundaryCondition(flag); cogFace f1=flag.p1.segment().face();  g2->BoundaryCondition(flag); cogFace f2=flag.p1.segment().face();  flag.p1.segment() = face(f1,f2);  return cogRCConditionFound;}/*cogIndex   CogeometryPair::Line (cogFlag1& flag, const cogLine& s) const{  cogIndex r1,r2; cogBoolean first;  cogPoint s10=s.c0,s11=s.c1; cogLine ss1(s10,s11);  cogPoint s20=s.c0,s21=s.c1; cogLine ss2(s20,s21);  cogPoint fl1,fl0,flo; cogFlag1 fl(fl1,fl0,flo);  g1->Point(s10); g1->Point(s11); r1=g1->Line(flag,ss1);  g2->Point(s20); g2->Point(s21); r2=g2->Line(fl,ss2);beg:  if(r1==cogRCFaceNotFound){    if(r2==cogRCFaceNotFound) return cogRCFaceNotFound;    first = cogFalse;  }else if(r2==cogRCFaceNotFound){    first = cogTrue;  }else{    if(flag.p1.scalar(s.c0,fl1) > 0){      first = cogFalse;    }else{      first = cogTrue;    }  }  if(first){    fl.p0 = flag.p0;    fl.po = flag.po;    g2->Point(fl.p0);     if(fl.p0.segment()!=ss2.c0.segment()){      ss2.c1 = fl.p0; r2 = g2->Line(fl,ss2);      ss1.c1 = fl.p0; r1 = g1->Line(fl,ss2);      goto beg;    }    wzAssert(fl.p0.segment()==ss2.c0.segment());    g2->Point(fl.po);    flag.p0.segment() = region(flag.p0.segment().region()    ,fl.p0.segment().region());    flag.po.segment() = region(flag.po.segment().region()    ,fl.po.segment().region());  }else{    flag.p1=fl.p1;    flag.p0=fl.p0;    flag.po=fl.po;    g1->Point(fl.p0);    if(fl.p0.segment()!=ss1.c0.segment()){      ss2.c1 = fl.p0; r2 = g2->Line(fl,ss2);      ss1.c1 = fl.p0; r1 = g1->Line(fl,ss2);      goto beg;    }    g1->Point(fl.po);    flag.p0.segment() = region(fl.p0.segment().region()    ,flag.p0.segment().region());    flag.po.segment() = region(fl.po.segment().region()    ,flag.po.segment().region());  }  return cogRCFaceFound;}*/CogeometryPair::CogeometryPair(cogeometry geom1,cogeometry geom2,			       cogPairToSegment* r)  :g1(geom1),g2(geom2),region(*r),face(*r){;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -