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

📄 cogenerator.cxx

📁 Delaunay三角形的网格剖分程序
💻 CXX
字号:
#include "cogenerator.hxx"#include "cogenoctree.hxx"#include "cogenchart.hxx"#include "cogenrefine.hxx"#include "cogenpoints.hxx"#include "cogencomposite.hxx"#include "cog1d.hxx"#include "cogwarnings.hxx"#include <time.h>cogenOctree	Cogenerator::cogenoctree() const	{return 0;}cogenRefine	Cogenerator::cogenrefine() const	{return 0;}cogenComposite	Cogenerator::cogencomposite() const	{return 0;}cogenChart	Cogenerator::cogenchart() const		{return 0;}cogenPoints	Cogenerator::cogenpoints() const	{return 0;}cogenOctree	CogenDecorator::cogenoctree() const	{return original->cogenoctree();}cogenRefine	CogenDecorator::cogenrefine() const	{return original->cogenrefine();}cogenComposite	CogenDecorator::cogencomposite() const	{return original->cogencomposite();}cogenChart	CogenDecorator::cogenchart() const	{return original->cogenchart();}cogenPoints 	CogenDecorator::cogenpoints() const	{return original->cogenpoints();}wzgrid Cogenerator::generateGrid(cogeometry g,wzpoints plist) const{  plist->computeBox();  wzdelaunayGenerator gen = new wzDelaunayGenerator(plist->boxDim,plist->spaceDim,						    plist->fDim);  gen->Delaunay(plist,g);  return gen->grid();}wzgrid Cogenerator::generateGrid(cogeometry g,wzmetric r,wzchart c) const{  ((Cogenerator*) this)->endInitialization();  wzpoints plist = generatePoints(g,r,c);  return generateGrid(g,plist);}CogenDecorator::CogenDecorator(cogenerator content):original(content){  initialize();}wzgrid Cogenerator::generateGrid(wzpoints plist) const{return generateGrid(new Cogeometry(),plist);}wzgrid Cogenerator::generateGrid(char* pointlistfile) const{  wzPointList plist(pointlistfile);  wzgrid g = generateGrid(&plist);  return g;}static int suppress_unreachable_warning = 1;wzpoints Cogenerator::generatePoints(cogeometry g,wzmetric r,wzchart c) const{  if(suppress_unreachable_warning) return new wzPointList();//  more or less useless dummy (nobody creates a grid to get the points):  wzIndex i,j;  wzPoint *n;  wzgrid grid = generateGrid(g,r,c);  wzpoints p = new wzPointList();  cogLoop(grid->points,i){    j = p->create();     n  = &(p->Point[j]);    *n = grid->Point[i];  }  return p;}extern int ibgNumberOfFaceCells;void ibgDistinguishOutsideInside(wzgrid g, wzRegion out, wzRegion ins, wzRegion undef);wzgrid Cogenerator::generateGrid1(wzpoints plist) const{  clock_t time0=clock();  clock_t timeo;  long int timed;  wzIndex p;  cogeometry g = new Cogeometry0D;  cogInfoGenerate("\nCOG <>: <>D Delaunay grid with <> points")<<cogVersion;  wzRangeLoop(*plist,p){    g->Point(plist->Point[p]);  }  cogInfoGenerate<<plist->spaceDim, plist->length();  wzdelaunayGenerator gen = new wzDelaunayGenerator(plist->boxDim,plist->spaceDim);  //  wzgrid grid = new wzGrid(plist->spaceDim,plist->spaceDim);  // grid->Delaunay(plist,g);  gen->Delaunay(plist);  timed = (1000*(long int)((timeo=clock()) - time0))/CLOCKS_PER_SEC;  cogInfoGenerate(" created in <> ms;")    <<(wzIndex)timed;  ibgDistinguishOutsideInside(gen->grid(),1,2,3);  ibgFaceOutside = 0; ibgSetDefaultFace=1;  gen->createFaces(g);  ibgFaceOutside = 1; ibgSetDefaultFace=0;  timed = (1000*(long int)((clock()) - timeo))/CLOCKS_PER_SEC;  cogInfoGenerate("\nboundary detection: <> face cells created in <> ms;")    <<ibgNumberOfFaceCells,(wzIndex)timed;  return gen->grid();}wzgrid	Cogenerator::operator()(cogeometry g,wzmetric r,wzchart c)const{  clock_t time0=clock();  //  clock_t timeo;  long int timed;  cogInfoGenerate("\nCOG <>: <> ")<<cogVersion,"Grid";  wzgrid grid = generateGrid(g,r,c);  timed = (1000*(long int)((clock()) - time0))/CLOCKS_PER_SEC;  cogInfoGenerate(" created in <> ms;\n")<<(wzIndex)timed;  return grid;}

⌨️ 快捷键说明

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