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

📄 mainsgtest.html

📁 Delaunay三角形的网格剖分程序
💻 HTML
字号:
<TITLE>COG 2.1: Interface to sxgrid</TITLE><PRE>#include <stdio.h>#include <stdlib.h>#include "sg-cog.hxx"#include "segtest.cxx"#include "gentest.cxx"#include "outtest.cxx"#include "sgtest.cxx"int sgNx=2;int sgNy=2;int sgNz=2;ibgFloat sgCxmin=0.0;ibgFloat sgCxmax=1.0;ibgFloat sgCymin=0.0;ibgFloat sgCymax=1.0;ibgFloat sgCzmin=0.0;ibgFloat sgCzmax=1.0;ibgFloat sgCx[sgCOORDMAX]={0.0, 0.5, 1.0};ibgFloat sgCy[sgCOORDMAX]={0.0, 0.5, 1.0};ibgFloat sgCz[sgCOORDMAX]={0.0, 0.5, 1.0};int sgCMaterialTable[sgCMAX];int sgFMaterialTable[sgFMAX];wzRegion (*sgCMatFunction)(const cogPoint&p)=NULL;wzFace (*sgFMatFunction)(const cogPoint&p)=NULL;char sgFileName[500];void sgCreateCoordinates(int n,ibgFloat coord[], ibgFloat min, ibgFloat max){  int i;  ibgFloat h;  if (n&gt;sgCOORDMAX) { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);}  if (n&lt;1)        { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);}  if (n&gt;1) h=(max-min)/(double)(n-1);  coord[0]=min;  for(i=1;i&lt;n-1;i++)       coord[i]=coord[i-1]+h;  coord[n-1]=max;}#define generator_initialize_definedvoid generator_initialize(int argc, char *argv[]){  int i;  sgCMatFunction=0;  sgFMatFunction=0;  sprintf(sgFileName,"%s.%s",argv[0],"sgz");    i=1;  while (i&lt;argc)    {      if      (strcmp(argv[i],"-o")==0)     {  sprintf(sgFileName,"%s",argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-nx")==0)    {  sgNx=   atoi(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-ny")==0)    {  sgNy=   atoi(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-nz")==0)    {  sgNz=   atoi(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-xmin")==0)  {  sgCxmin=atof(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-xmax")==0)  {  sgCxmax=atof(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-ymin")==0)  {  sgCymin=atof(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-ymax")==0)  {  sgCymax=atof(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-zmin")==0)  {  sgCzmin=atof(argv[i+1]); i+=2;}      else if (strcmp(argv[i],"-zmax")==0)  {  sgCzmax=atof(argv[i+1]); i+=2;}      else {i++;}    }    sgCreateCoordinates(sgNx,sgCx,sgCxmin,sgCxmax);  sgCreateCoordinates(sgNy,sgCy,sgCymin,sgCymax);  sgCreateCoordinates(sgNz,sgCz,sgCzmin,sgCzmax);    for(i=0;i&lt;sgFMAX;i++)    sgFMaterialTable[i]=0;  for(i=0;i&lt;sgCMAX;i++)    sgCMaterialTable[i]=i,    sgFMaterialTable[i]=i;}ibgcoarse test_coarse(){  char cmdname[64];  int dim;    printf("I-Data: cgrid size %d x %d x %d\n",	 sgNx, sgNy, sgNz);  printf("I-Data: cgrid volume [ %g , %g ] x [ %g x %g ] x [ %g x %g]",	 sgCx[0],sgCx[sgNx-1],	 sgCy[0],sgCy[sgNy-1],	 sgCz[0],sgCz[sgNz-1]);    if (sgNx&lt;1)  { printf("E-Wrong, wrong x coordinate number\n", sgNx); exit(1);}  if (sgNy&lt;1)  { printf("E-Wrong, wrong y coordinate number\n", sgNy); exit(1);}  if (sgNz&lt;1)  { printf("E-Wrong, wrong z coordinate number\n", sgNz); exit(1);}  if (sgCx[0]&gt;sgCx[sgNx-1]){ printf("E-Wrong, wrong x coordinate values\n"); exit(1);}  if (sgCy[0]&gt;sgCy[sgNy-1]){ printf("E-Wrong, wrong y coordinate values\n"); exit(1);}  if (sgCz[0]&gt;sgCz[sgNz-1]){ printf("E-Wrong, wrong z coordinate values\n"); exit(1);}    if (sgNx&gt;1) dim=1;  if (sgNy&gt;1) dim=2;  if (sgNz&gt;1) dim=3;    ibgcoarse coarse = new ibgCoarseGrid(dim);  if (sgNx&gt;1) coarse-&gt;setList(0,sgNx,sgCx);  if (sgNy&gt;1) coarse-&gt;setList(1,sgNy,sgCy);  if (sgNz&gt;1) coarse-&gt;setList(2,sgNz,sgCz);  return coarse;}/* obsolete */void   sgInitGrid(int argc, char *argv[]) {	generator_initialize(argc,argv);	output_initialize(argc,argv);}void   sgCreateGridAndDump(Cogeometry &amp;cog, ibgCriteria &amp;crit){  test_segment_description test_segments;  ibgcoarse box = test_coarse();  ibggenerator gen = test_generator();  wzgrid grid = (*gen)(&amp;cog,box,&amp;crit);  for(int i=1;i&lt;sgCMAX;i++){	if(wzRegion(i).valid()) wzRegion(i).material() = sgCMaterialTable[i];  }  test_output(&amp;cog,grid);}</PRE>

⌨️ 快捷键说明

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