#pragma once #include "MLMicroStructureExport.h" #include "MLPlineList.h" class GMLDimsIter; class MLPline; class MLMICROSTRUCTURE_EXPORT MLMicroStructure { public: MLMicroStructure(); public: // 过滤最小面积 double m_minArea; // 曲线最小面积 int m_limitNum; // 曲线最小节点数 // 删除断层内部 bool m_bFaultFilter; // 删除断层内部曲线 double m_faultCloseDis;// 断层最小闭距离 // 闭合圈闭 bool m_bCloseShape; // 是否生成闭合 double m_closeDis; // 曲线闭合距离 // 断层圈闭 bool m_bFaultShape; // 是否生成断鼻和断槽 double m_extendDis; // 曲线延长距离 // 鼻状圈闭 bool m_bNoseShape; // 是否生成鼻状和沟槽 double m_offsetDis; // 曲线偏移距离 double m_minAngle; // 最小角度 double m_redundant; // 曲线冗余系数 double m_radius; // 最小半径 bool m_smooth; // 光滑半径 double m_zoomin; // 放大系数 double m_unitSacle; // 鼻状隆起和沟槽重合比 bool m_bOutCircle = false; // 是否输出圆圈 double m_dRadiusScale = 10.0; // 半径比 // 过滤深度范围之外的圈闭 double m_minDepth; // 最小幅度 double m_maxDepth; // 最大幅度 public: // 设置等值线数据 void setContourList(const MLPlineList& contourList); // 设置断层值数据 void setFaultList(const MLPlineList& faultList); // 设置网格信息 //double xyRange[4]; /* Min/max x and y coordinates */ //int nxny[2]; /* nx nyNumber of columns Number of rows*/; //double inc[2]; /* x and y increment */ //double zRange[2]; /* Minimum z value Maximum z value */ void setGridInfo(double* xyRange, int* nxny, double* inc, double*zRange); // 设置Z值数据 // num = nx*ny // data = z array void setZData(long num, float* data); // 运行 bool run(); // 清空内存 void clearMemory(); // 读dfg 网格 int readDfgBinary(const char* file); // 闭合圈闭 MLPlineList m_closeObjPosiAry; MLPlineList m_closeObjNegaAry; // 断层圈闭 MLPlineList m_faultObjPosiAry; MLPlineList m_faultObjNegaAry; // 鼻状圈闭 MLPlineList m_noseObjPosiAry; MLPlineList m_noseObjNegaAry; private: MLPlineList m_contourList; MLPlineList m_faultList; GMLDimsIter* m_dimsIter; };