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

📄 ibgcriteria.hxx

📁 Delaunay三角形的网格剖分程序
💻 HXX
字号:
#ifndef ibgcriteria_hxx#define ibgcriteria_hxx#include "wzmetric.hxx"#ifndef ibgtypes_hxx#include "ibgtypes.hxx"#endif/*class ibgCriteria; // abstract basic class// typedef ibgCriteria* ibgcriteria;class ibgCriteria: public wzMetric{public:  ibgBoolean	relativeToCoarseGrid;  ibgFloat	globalMinimalLength;  static const ibgFloat	defaultMinimalLength;protected:friend class wzProxy<ibgCriteria>;  ibgCriteria();  // these functions should be implemented by derived classes:public:  virtual void	maximalLengthInRegion(ibgFloat& length,					 const ibgPoint& region_point)const=0;  virtual void	maximalLengthNearFace(ibgFloat& orthogonal,ibgFloat& tangential,				      const ibgPoint& point_on_face,				      const ibgPoint& point_before_face,				      const ibgPoint& point_after_face)const=0;  virtual void	maximalLengthNearLine(ibgFloat& orthogonal,ibgFloat& tangential,				      const ibgPoint& point_on_line)const=0;  virtual void	maximalLengthNearVertex(ibgFloat& length,					const ibgPoint& vertex_point)const=0;  virtual ibgBoolean 	refineBetween(const ibgPoint&,const ibgPoint&)const=0;  // the remaining is for the internal usage only:  ibgFloat fx[3],dmin;  void	initializeBox(ibgFloat lx=1.0, ibgFloat ly=1.0, ibgFloat lz=1.0);  void	refineRegion(ibgFloat* length,		     const ibgPoint& region_point)const;  void	refinlFace(ibgFloat& orthogonal,ibgFloat& tangential,		   const ibgPoint& point_on_face,		   const ibgPoint& point_before_face,		   const ibgPoint& point_after_face)const;  void	refineLine(ibgFloat& orthogonal,ibgFloat& tangential,		   const ibgPoint& point_on_line)const;  void	refineVertex(ibgFloat& length,		     const ibgPoint& vertex_point)const;  ibgBoolean refinePair(const ibgPoint&,const ibgPoint&)const;};*/typedef wzProxy<wzMetric> ibgcriteria;/*class ibgCriteriaHomogeneous: public ibgCriteria{  virtual void	maximalLengthInRegion(ibgFloat& length,				      const ibgPoint& region_point)const;  virtual void	maximalLengthNearFace(ibgFloat& orthogonal,ibgFloat& tangential,				      const ibgPoint& point_on_face,				      const ibgPoint& point_before_face,				      const ibgPoint& point_after_face)const;  virtual void	maximalLengthNearLine(ibgFloat& orthogonal,ibgFloat& tangential,				      const ibgPoint& point_on_line)const;  virtual void	maximalLengthNearVertex(ibgFloat& length,					const ibgPoint& vertex_point)const;  virtual ibgBoolean 	refineBetween(const ibgPoint&,const ibgPoint&)const;public:  ibgCriteriaHomogeneous();  ibgFloat regionLength;  ibgFloat faceBetween;  ibgFloat faceOrthogonal;  ibgFloat faceTangential;  ibgFloat lineOrthogonal;  ibgFloat lineTangential;  ibgFloat vertexLength;  ibgFloat anisotropic[3];};// not yet implemented:static const ibgIndex MaxFunctions = 50;static const ibgIndex MaxValues = 50;class ibgCriteriaFromFile: public ibgCriteriaHomogeneous{public:// some functions used for refinement criteria:  ibgIndex  Number;  ibgIndex  Type[MaxFunctions];  ibgIndex  Dir[MaxFunctions];  ibgIndex  Region[MaxFunctions];  ibgFloat  Value[MaxFunctions];  ibgFloat  Pos[MaxFunctions][6];  ibgFloat  Fac[MaxFunctions][6];  ibgCriteriaFromFile(char *filename);  virtual void	maximalLengthInRegion(ibgFloat& length,				      const ibgPoint& region_point)const;  virtual ibgBoolean 	refineBetween(const ibgPoint&,const ibgPoint&)const;};class ibgCriteriaByFunction:  public ibgCriteriaHomogeneous{  const cogPointToFloat& f;public:  ibgCriteriaByFunction(const wzPointToFloat& func)    :f(func){;}  virtual void	maximalLengthInRegion(ibgFloat& length,				      const ibgPoint& region_point) const  {length = f(region_point);}};class ibgCriteriaSimpleFunction:  public ibgCriteriaHomogeneous{  wzFloat (*f)(const wzPoint& p);  virtual void	maximalLengthInRegion(ibgFloat& length,				      const ibgPoint& region_point) const  {length = f(region_point);}public:  ibgCriteriaSimpleFunction(wzFloat (*func)(const wzPoint& p))    :f(func){;}};*/#endif

⌨️ 快捷键说明

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