You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.8 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件: 曲面文件操作类主要是为了封装CDimension3D与CFunction2D两个曲面类
//主要功能:
// 用于保存网格类
//程序编写: 2011-12-8
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "Dimension3D.h"
#include "Function2D.h"
namespace NContour
{
class AFX_EXT_CLASS CMeshBase
{
public:
CMeshBase(void);
~CMeshBase(void);
CGrid* GetMesh() { return m_pMesh; }
CDimension3D* GetDfg() { return (CDimension3D*)m_pMesh; }
CFunction2D* GetFun() { return (CFunction2D*) m_pMesh; }
CSize size(); //获得曲面的行列数
int GetDimension(void) { return GetMesh()->n; } //获得曲面的维数
double x(int i) { return GetMesh()->x(i); }
double y(int j) { return GetMesh()->y(j); }
CRect8 GetRect() { return GetMesh()->GetRect(); }
void operator =(CMeshBase& mb);
double GetValue(double x0, double y0) { return m_pMesh->Value(x0, y0); }
inline double GetValue(int i, int j) { return m_pMesh->Value(i, j); }
inline void SetValue(int i, int j, double v) { return m_pMesh->SetValue(i, j, v);}
virtual void ClearMesh(); //仅删除网格文件
virtual void Empty();
virtual void Serialize(CArchive& ar, const short &ver);
enum EMeshType
{
typeERR = 0,
typeDFG = 1, //CDimension3D对象可以是体网格
typeFXY = 2 //CFunction2D对象
};
bool CreateMesh(EMeshType mt); //生成对应的指针对象,并绑定
void Attach(CGrid* pMesh, EMeshType mt);
CGrid* Detach();
EMeshType GetMeshType() { return m_eMeshType; }
void SetMeshType(EMeshType mt) { m_eMeshType = mt; }
BOOL m_bRealTimeDraw;
protected:
//为了支持体网格并与CMesh类中的对象统一内部生成的CDimension3D对象但使用时仅为CDimension2D
//另外还可以是CFunction2D对象
CGrid* m_pMesh;
EMeshType m_eMeshType;
};
}//namespace