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

📄 ibgoedge.cxx

📁 Delaunay三角形的网格剖分程序
💻 CXX
字号:
#include "ibgoctree.hxx"#include "cogwarnings.hxx"void ibgOctree::findEdges(){  //  return;  wzIndex edge=edges.create();  wzIndex rc,s,i,f,p;  wzRangeLoop(faces,f){    wzIndex l=fLine[f];    for(s=0;s<LineSides;s++){      p = getPlane(l,s);      if(!p){	// that's possible - no plane in a direction which intersects a cube;	continue;      }      // now, we have to identify the face as on one of the four sides of the plane.      // note that one of the end points of the line may be a middle point.      ibgIndex bnu=lNodeDown[l];	// doubles some getPlane-code      ibgIndex bno=lNodeUp[l];      ibgIndex d  = lDirection(l);      ibgIndex piu = lsPlane[d][s], pio = lsPlane[down(d)][s];      wzAssert(p==bnPlane[piu][bnu]); wzAssert(p==bnPlane[pio][bno]);      ibgIndex buu=pNode[pReverse[piu]][p];      ibgIndex boo=pNode[pReverse[pio]][p];      wzAssert((buu==bnu) || (boo==bno));      piu = lsPlane[d][sOther[s]], pio = lsPlane[down(d)][sOther[s]];      ibgIndex bru=pNode[pReverse[piu]][p];      ibgIndex bro=pNode[pReverse[pio]][p];      wzAssert(bru != buu);      wzAssert(bru != bro);      wzAssert(bru != boo);      wzAssert(bro != buu);      wzAssert(bro != boo);      wzAssert(buu != boo);      // now it seems clear that we have found the 4 nodes correctly.      // time to search for the edge intersection with the plane.      try{	cogFlag1 f1(fPoint[f],fPointDown[f],fPointUp[f]);	cogFlag2 f2(ePoint[edge],ePointFace[edge],ePointDown[edge],ePointUp[edge]);	rc=geo->Square(f2,f1,		       cogSquare(nPoint[bnBase[buu]],				 nPoint[bnBase[boo]],				 nPoint[bnBase[bro]],				 nPoint[bnBase[bru]]));	if(rc!=cogRCEdgeFound){	  // establishing connection to the other face omitted yet;	  // means, no pair establishment yet.	  continue;	}	for(i=0;i<PlaneSides;i++){	  eVertex[i][edge] = 0;	  if(!pEdge[p]) noteEdgeOnCube(p,edge,i);	}	eFace[edge] = f; fEdge[s][f]=edge;	ePlane[edge]= p; eNext[edge] = pEdge[p]; pEdge[p] = edge;	eIdent[edge]= 0;	// means, not yet implemented;	edge = edges.create();      }catch(...){	cogInfoEdgeProblems();      }    }  }  edges.destroy(edge);}      

⌨️ 快捷键说明

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