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

📄 cogprint.cxx

📁 Delaunay三角形的网格剖分程序
💻 CXX
字号:
#include <math.h>#include "cog.hxx"#include "wzoutput.hxx"// this file contains test functions with very short names, without cog-prefix// the purpose is to make debugging faster. void cogFlag1::print() const{  wzOutput& pout = wzOutput::Default;  if(p1.invalid()){    pout("<> ")<<"invalid 1-flag";    p0.print();    return;  }  pout("<> ")<<"1-flag";  p1.print();  cogFloat dd=cogLine(po,p0).diameter();  pout("regions from <> to <> in direction [<>,<>,<>] (distance <>)\n")<<    (wzIndex)p0.region(),(wzIndex)po.region(),    (po[0]-p0[0])/dd,    (po[1]-p0[1])/dd,    (po[2]-p0[2])/dd,    dd;  if((po[0]-p1[0])*(p0[0]-p1[0]) +     (po[1]-p1[1])*(p0[1]-p1[1]) +     (po[2]-p1[2])*(p0[2]-p1[2]) >0){    pout(" p1 [<10>,<10>,<10>] not between\n p0 [<10>,<10>,<10>] and\n  po [<10>,<10>,<10>]\n")      ,p1[0],p1[1],p1[2]      ,p0[0],p0[1],p0[2]      ,po[0],po[1],po[2];  }}void cogFlag2::print() const{  wzOutput& pout = wzOutput::Default;  if(p2.invalid()){    ((cogFlag1*)this)->print();    return;  }  pout("<> ")<<"2-flag";  p2.print();  cogFloat dd=cogLine(p1,p2).diameter();  pout("face <> in direction [<>,<>,<>] (distance <>)\n")<<    (wzIndex)p1.face(),    (p1[0]-p2[0])/dd,    (p1[1]-p2[1])/dd,    (p1[2]-p2[2])/dd,    dd;  dd=cogLine(po,p0).diameter();  pout("regions from <> to <> in direction [<>,<>,<>] (distance <>)\n")<<    (wzIndex)p0.region(),(wzIndex)po.region(),    (po[0]-p0[0])/dd,    (po[1]-p0[1])/dd,    (po[2]-p0[2])/dd,    dd;  if((po[0]-p1[0])*(p0[0]-p1[0]) +     (po[1]-p1[1])*(p0[1]-p1[1]) +     (po[2]-p1[2])*(p0[2]-p1[2]) >0){    pout(" p1 [<10>,<10>,<10>] not between\n p0 [<10>,<10>,<10>] and\n  po [<10>,<10>,<10>]\n")      ,p1[0],p1[1],p1[2]      ,p0[0],p0[1],p0[2]      ,po[0],po[1],po[2];  }}void cogLine::print() const{  wzOutput& pout = wzOutput::Default;  c0.print();  c1.print();  pout("diameter <>\n")<<diameter();}void cogTriangle::print() const{  wzOutput& pout = wzOutput::Default;  c0.print();  c1.print();  c2.print();  pout("diameter <>\n")<<diameter();}void cogTetrahedron::print() const{  wzOutput& pout = wzOutput::Default;  c0.print();  c1.print();  c2.print(); c3.print();  pout("volume <> diameter <>\n")<<volume(),diameter();}void cogSquare::print() const{  c0.print();  c1.print();  c2.print(); c3.print();}void cogFlag3::print() const{  wzOutput& pout = wzOutput::Default;  if(!p3.isVertex()){    ((cogFlag2*)this)->print();    return;  }  pout("<> ")<<"3-flag";  p3.print();  pout("edge <> in direction [<>,<>,<>]\n")<<    (wzIndex)p2.edge(),    p2[0]-p3[0],    p2[1]-p3[1],    p2[2]-p3[2];  pout("face <> in direction [<>,<>,<>]\n")<<    (wzIndex)p1.face(),    p1[0]-p2[0],    p1[1]-p2[1],    p1[2]-p2[2];  pout("regions from <> to <> in direction [<>,<>,<>]\n")<<    (wzIndex)p0.region(),(wzIndex)po.region(),    po[0]-p0[0],    po[1]-p0[1],    po[2]-p0[2];}void s1(const cogLine& s){s.print();}void s2(const cogTriangle& s){s.print();}void s3(const cogTetrahedron& s){s.print();}void ss(const cogSquare& s){s.print();}void p1(const cogFlag1& f){f.print();}void p2(const cogFlag2& f){f.print();}void p3(const cogFlag3& f){f.print();}void p(const wzPoint& x){x.print();}void ton(const wzPoint& x,const wzPoint& y,const wzPoint& z){  wzOutput& pout = wzOutput::Default;  cogFloat l2 = y.scalar(z,z);  cogFloat v2 = y.vector2(x,z);  pout("relative distance <> (length <>)") << sqrt(v2)/l2, sqrt(l2);}cogFloat xon(const wzPoint& x,const wzPoint& y,const wzPoint& z){  cogFloat l2 = y.scalar(z,z);  cogFloat v2 = y.vector2(x,z);  return sqrt(v2)/l2;}  void cogLinkPrintCommands(){  if(0){    wzPoint x; cogFlag1 f1(x,x,x); cogFlag2 f2(x,x,x,x); cogFlag3 f3(x,x,x,x,x);    cogLine t1(x,x); cogTriangle t2(x,x,x); cogSquare ts(x,x,x,x);     cogTetrahedron t3(x,x,x,x);    p(x);    p1(f1);    p2(f2);    p3(f3);    s1(t1);  s2(t2);    s3(t3);    ss(ts);     ton(x,x,x); xon(x,x,x);  }}

⌨️ 快捷键说明

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