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

📄 wzmetric.hxx

📁 Delaunay三角形的网格剖分程序
💻 HXX
字号:
#ifndef wzmetric_hxx#define wzmetric_hxx#include "wzpoint.hxx"#include "cog.hxx"#include "wzsafepointer.hxx"const wzIndex wzMetricDataMaxSize = 20;class wzMetricData{};class wzMetricLocal: public wzMetricData{public:  wzFloat g_ii[wzMetricDataMaxSize];};class wzDiagonalMetricData: public wzMetricData{public:  wzFloat g_ii[wzPointDim];};class wzMetric: public virtual wzProxyTarget{public:  virtual wzIndex size() const {return 0;}  virtual void getMetric(wzMetricData& data, const wzPoint& p) const  {;}  virtual void getMetric(wzMetricData& data, const cogFlag1& f) const  {;}  virtual wzFloat g_ii(const wzMetricData& data, 		       const wzPoint& q, wzIndex i) const  {return 1.0;}  virtual wzFloat g_ii(const wzMetricData& data, 		       const cogFlag1& q, wzIndex i) const  {return 1.0;}  virtual wzFloat distance(const wzMetricData& data, 			   const wzPoint& p,  const wzPoint& q) const;  virtual wzFloat distance(const wzMetricData& data, 			   const cogFlag1& f,  const wzPoint& q) const;  wzBoolean refineBetween(const wzMetricData& data, 			  const wzPoint& p,  const wzPoint& q) const  {return (distance(data,p,q)>1);}  wzBoolean refineBetween(const wzMetricData& data, 			  const cogFlag1& p,  const wzPoint& q) const  {return (distance(data,p,q)>1);}  //obsolete  wzBoolean refineBetween(const wzPoint& p,  const wzPoint& q) const  {wzMetricLocal m; getMetric(m,p); return refineBetween(m,p,q);}  void maximalLengthInRegion(wzFloat* d, const wzPoint& p) const  {*d = wzInfty;}};class wzDiagonalMetricSimple: public wzMetric{protected:  wzFloat G_ii[wzPointDim];  wzFloat f_oo, f_tt;public:  wzIndex size() const {return wzPointDim*sizeof(wzFloat);}  void refinementGlobal(wzFloat dx, wzFloat dy=wzInfty, wzFloat dz=wzInfty);  void faceRefinementGlobal(wzFloat orthogonal, wzFloat tangential);  virtual void getMetric(wzMetricData& data, const wzPoint& p) const;  virtual void getMetric(wzMetricData& data, const cogFlag1& f) const;  virtual wzFloat g_ii(const wzMetricData& data, 		       const wzPoint& q, wzIndex i) const  {return G_ii[i];}  virtual wzFloat g_ii(const wzMetricData& data, 		       const cogFlag1& f, wzIndex i) const;  virtual wzFloat distance(const wzMetricData& data, 			   const wzPoint& p,  const wzPoint& q) const;  virtual wzFloat distance(const wzMetricData& data, 			   const cogFlag1& f,  const wzPoint& q) const;  wzDiagonalMetricSimple(wzFloat dx=wzInfty, 			 wzFloat dy=wzInfty,			 wzFloat dz=wzInfty);};class wzMetricByFunction  : public wzDiagonalMetricSimple{  wzFloat (*Function)(const wzPoint& p);public:  wzMetricByFunction(wzFloat (*f)(const wzPoint& p)):Function(f){}  virtual void getMetric(wzMetricData& data, const wzPoint& p) const;  virtual void getMetric(wzMetricData& data, const cogFlag1& f) const;};typedef wzProxy<wzMetric> wzmetric;// obsolete:#define ibgcriteria wzmetric#define ibgCriteriaSimpleFunction wzMetricByFunction#endif

⌨️ 快捷键说明

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