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.

93 lines
2.0 KiB
C++

#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;
};