📄 cogprint.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 + -