📄 ibgovertex.cxx
字号:
#include "ibgoctree.hxx"#include "cogwarnings.hxx"#include "wzoutput.hxx"static int place[2][4]={{0,1,3,2},{0,3,1,2}};void ibgOctree::findVertices(){ // wzOutput& pout = wzOutput::Default; int rc,n,c,s,d,base,nn,no,cc,co,pp,ee,k,l,pl; int e,arg[4][2];//,ddd[4][2]; int v=vertices.create(); wzRangeLoop(bcells,c){ n = bcType[c]; base = bcBase[c]; if(n==2) continue; // wzAssert(n>2); // that would be incorrect counting or an interesting geometry. // pc(c); for(ee=0;ee<n;ee++){ e = bcEdge[ee][c]; // pe(e); pl = ePlane[e]; if(pCell[0][pl]==c) {s=0;} else {s=1;} // if(pCell[s][pl]!=c) continue; // hack wzAssert(pCell[s][pl]==c); d = pDirection(pl); // pout(" nodes of a side: <>(<>),<>(<>),<>(<>),<>(<>)\n"); for(k=0;k<PlaneCorners;k++){ pp = ptReverse[k][d]; if(s==0){ cc = cReverse[llCell[pSide0[pp]][pSide1[pp]]]; co = cReverse[llCell[pSide1[pp]][pSide0[pp]]]; }else{ cc = cReverse[llCell[pSide1[pp]][pSide0[pp]]]; co = cReverse[llCell[pSide0[pp]][pSide1[pp]]]; } nn = cNode[cc][base]; no = cNode[co][base]; // pout<<nBoundary[nn],nBoundary[no]; l = place[s][k]; // ddd[k][0] = cc; ddd[k][1] = co; arg[l][0] = nn; arg[l][1] = no; } try{ cogFlag2 f2(ePoint[e],ePointFace[e],ePointDown[e],ePointUp[e]); cogFlag3 f3(vPoint[v],vPointEdge[v],vPointFace[v],vPointDown[v],vPointUp[v]); rc=geo->Cube(f3,f2, cogCube(nPoint[arg[0][0]], nPoint[arg[1][0]], nPoint[arg[2][0]], nPoint[arg[3][0]], nPoint[arg[0][1]], nPoint[arg[1][1]], nPoint[arg[2][1]], nPoint[arg[3][1]])); if(rc!=cogRCVertexFound){ // establishing connection to the other face omitted yet; // means, no pair establishment yet. // wzAssert(0); continue; } // pv(v); vEdge[v] = e; eVertex[s][e]=v; vCell[v] = c; vNext[v] = bcVertex[c]; bcVertex[c] = v; vIdent[v]= 0; // means, not yet implemented; v = vertices.create(); }catch(...){ cogInfoVertexProblems(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -