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

📄 cogsimple.cxx

📁 Delaunay三角形的网格剖分程序
💻 CXX
字号:
#include "cogsimple.hxx"#include "coglib.hxx"CogeometryPlane::CogeometryPlane(			cogFloat  x, cogFloat  y, cogFloat  z,			cogFloat ax, cogFloat ay, cogFloat az, 			cogRegion rp, cogRegion rm):CogeometryWithRegions(*(wzPointToSegment*)this){ rminus = rm; rplus = rp; setDirection(ax,ay,az); setPoint(x,y,z);}CogeometryPlane::CogeometryPlane(cogRegion rp, cogRegion rm):CogeometryWithRegions(*(wzPointToSegment*)this){ rminus = rm; rplus = rp; setDirection(1,0,0); setPoint(0,0,0);}cogSegment CogeometryPlane::operator()(const cogPoint& p) const{ if((a[0]*p[0]+a[1]*p[1]+a[2]*p[2]-d)>0) return rplus; return rminus;}void CogeometryPlane::setDirection(cogFloat x, cogFloat y, cogFloat z){ a[0] = x;  a[1] = y;  a[2] = z; d = 0;}void CogeometryPlane::setPoint(cogFloat x, cogFloat y, cogFloat z){ d = (a[0]*x+a[1]*y+a[2]*z); }CogeometryEllipsoid::CogeometryEllipsoid(			cogFloat  x, cogFloat  y, cogFloat  z,			cogFloat rx, cogFloat ry, cogFloat rz, 			cogRegion rinside, cogRegion routside):CogeometryWithRegions(*(wzPointToSegment*)this){ rin = rinside; rout = routside; setRadius(rx,ry,rz); setCenter(x,y,z);}CogeometryEllipsoid::CogeometryEllipsoid(			cogRegion rinside, cogRegion routside):CogeometryWithRegions(*(wzPointToSegment*)this){ rin = rinside; rout = routside; setRadius(); setCenter();}cogSegment CogeometryEllipsoid::operator()(const cogPoint& p) const{cogFloat dd=0, rr; cogIndex d; for(d=0;d<3;d++){  // directions	rr = (p[d]-c[d]);	rr /= r[d]; dd += rr*rr; } if(dd>1) return rout;  return rin;}void CogeometryEllipsoid::stretchRadius(cogFloat f){ r[0] *= f;  r[1] *= f;  r[2] *= f; }void CogeometryEllipsoid::stretchRadius(cogFloat fx, cogFloat fy, cogFloat fz){ r[0] *= fx;  r[1] *= fy;  r[2] *= fz; }void CogeometryEllipsoid::setSphere(cogFloat f){ r[0] = f;  r[1] = f;  r[2] = f; }void CogeometryEllipsoid::setRadius(cogFloat fx, cogFloat fy, cogFloat fz){ r[0] = fx;  r[1] = fy;  r[2] = fz; }void CogeometryEllipsoid::moveCenter(cogFloat x, cogFloat y, cogFloat z){ c[0] += x;  c[1] += y;  c[2] += z; }void CogeometryEllipsoid::setCenter(cogFloat x, cogFloat y, cogFloat z){ c[0] = x;  c[1] = y;  c[2] = z; }CogeometryTorus::CogeometryTorus(			cogFloat  x, cogFloat  y, cogFloat  z,			cogFloat rbig, cogFloat rsmall, 			cogRegion rinside, cogRegion routside):CogeometryWithRegions(*(wzPointToSegment*)this){ rin = rinside; rout = routside; setScale(rbig,rsmall); setCenter(x,y,z);}CogeometryTorus::CogeometryTorus(			cogRegion rinside, cogRegion routside):CogeometryWithRegions(*(wzPointToSegment*)this){ rin = rinside; rout = routside; setScale(3,1); setCenter();}cogSegment CogeometryTorus::operator()(const cogPoint& x) const{cogFloat xx=x[0]-c[0],yy=x[1]-c[1],zz=x[2]-c[2]; cogFloat r2=xx*xx+yy*yy, z2=zz*zz/rz2; cogFloat p =r2+z2+rp, pp=p*p-rs*r2; if(pp>0) return rout;  return rin;}void CogeometryTorus::setScale(cogFloat rbig, cogFloat rsmall){ rz2 = 1;	//(rbig-rsmall)*(rbig-rsmall); rp  = rbig*rsmall; rs  = (rbig+rsmall)*(rbig+rsmall);}void CogeometryTorus::moveCenter(cogFloat x, cogFloat y, cogFloat z){ c[0] += x;  c[1] += y;  c[2] += z; }void CogeometryTorus::setCenter(cogFloat x, cogFloat y, cogFloat z){ c[0] = x;  c[1] = y;  c[2] = z; }

⌨️ 快捷键说明

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