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

📄 cogprint.cxx

📁 有限元学习研究用源代码(老外的),供科研人员参考
💻 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 + -