📄 cogpair.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 + -