玫瑰图属性
This commit is contained in:
parent
84c52e0ae7
commit
458e342d93
|
|
@ -10035,8 +10035,7 @@ void QMyCustomPlot::s_changePlObjectProperty(QVariantMap variantMap)
|
||||||
|
|
||||||
|
|
||||||
void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCurveDANG,
|
void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCurveDANG,
|
||||||
QString csCurveGrad, double LeftVal3, double RightVal3,
|
QString csCurveGrad, double LeftVal3, double RightVal3, int nArc,
|
||||||
int nArc,
|
|
||||||
double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill,
|
double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill,
|
||||||
int lineNumber, double lineHeight, int lineThickness, QColor lineColor, bool drawAnnotation, bool drawHistogram,
|
int lineNumber, double lineHeight, int lineThickness, QColor lineColor, bool drawAnnotation, bool drawHistogram,
|
||||||
int baselineWidth, QColor baselineColor, int nstep, double LeftVal, double RightVal)
|
int baselineWidth, QColor baselineColor, int nstep, double LeftVal, double RightVal)
|
||||||
|
|
@ -10064,14 +10063,11 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// double nR = 50;
|
|
||||||
QPen wPen(crArc, nArcLineWidth);
|
QPen wPen(crArc, nArcLineWidth);
|
||||||
double centerX = this->m_iX2/2;
|
double centerX = this->m_iX2/2;
|
||||||
float flVal = 0.0f;
|
float flVal = 0.0f;
|
||||||
float x,y,x1,y1,x2,y2;
|
float x,y,x1,y1,x2,y2;
|
||||||
float ifdir[360];
|
float ifdir[360];
|
||||||
|
|
||||||
float mind=min(RightVal , LeftVal);
|
float mind=min(RightVal , LeftVal);
|
||||||
float maxd=max(RightVal , LeftVal);
|
float maxd=max(RightVal , LeftVal);
|
||||||
float dirmax,dipmax,dr;
|
float dirmax,dipmax,dr;
|
||||||
|
|
@ -10079,21 +10075,17 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
float ftmpSdep = m_SDep;
|
float ftmpSdep = m_SDep;
|
||||||
float ftmpEdep = m_EDep;
|
float ftmpEdep = m_EDep;
|
||||||
|
|
||||||
|
|
||||||
if (m_bTableData)
|
if (m_bTableData)
|
||||||
{
|
{
|
||||||
// ReadFracDef();
|
// ReadFracDef();
|
||||||
|
|
||||||
for (int i = 0 ; i < iFracType ; i++)
|
for (int i = 0 ; i < iFracType ; i++)
|
||||||
{
|
{
|
||||||
m_bTypeDraw[i] = true;
|
m_bTypeDraw[i] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ftmpSdep = -m_iY2;
|
ftmpSdep = -m_iY2;
|
||||||
ftmpEdep = -m_iY1;
|
ftmpEdep = -m_iY1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int nPointNum = m_FracTabList.count();
|
int nPointNum = m_FracTabList.count();
|
||||||
int n = m_FracDefList.count();
|
int n = m_FracDefList.count();
|
||||||
int tmp = ftmpSdep / nstep;
|
int tmp = ftmpSdep / nstep;
|
||||||
|
|
@ -10225,7 +10217,7 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int iIndex;
|
int iIndex;
|
||||||
flVal = 3.1415926535 *2./ nArc ;
|
flVal = 3.1415926535 *2./ nArc ;
|
||||||
dirmax=0; dipmax=0;
|
dirmax=0; dipmax=0;
|
||||||
for(i=0;i<=nArc;i++)
|
for(i=0;i<=nArc;i++)
|
||||||
|
|
@ -10235,7 +10227,6 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
dirmax=ifdir[i];
|
dirmax=ifdir[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (dirmax == 0 )
|
if (dirmax == 0 )
|
||||||
dirmax=1;
|
dirmax=1;
|
||||||
for(i=0;i<=nArc;i++)
|
for(i=0;i<=nArc;i++)
|
||||||
|
|
@ -10243,10 +10234,8 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
// ifdir[i]=ifdir[i]*(nRadius-GetLineWidth(pDC,m_nArcLineWidth/2.))/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
// ifdir[i]=ifdir[i]*(nRadius-GetLineWidth(pDC,m_nArcLineWidth/2.))/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
||||||
ifdir[nArc+1]=ifdir[1];
|
ifdir[nArc+1]=ifdir[1];
|
||||||
|
|
||||||
|
|
||||||
//方位频率
|
//方位频率
|
||||||
float x0,y0;
|
float x0,y0;
|
||||||
|
|
||||||
x = centerY;
|
x = centerY;
|
||||||
y = centerX;
|
y = centerX;
|
||||||
for(int i=0;i<=nArc;i++)
|
for(int i=0;i<=nArc;i++)
|
||||||
|
|
@ -10276,24 +10265,16 @@ void QMyCustomPlot::drawFgrq (bool bTableData, QString csCurveDDIR, QString csCu
|
||||||
myPolygon << QPointF(0, 0);
|
myPolygon << QPointF(0, 0);
|
||||||
pol->setPoints(myPolygon);
|
pol->setPoints(myPolygon);
|
||||||
}
|
}
|
||||||
|
|
||||||
// QCPItemRect* prt = new QCPItemRect(this);
|
|
||||||
// prt->topLeft->setCoords(x, y);
|
|
||||||
// prt->bottomRight->setCoords(x, y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//float ifdir[360], int iIndex, float dirmax
|
//float ifdir[360], int iIndex, float dirmax
|
||||||
|
|
||||||
if(drawAnnotation)
|
if(drawAnnotation)
|
||||||
{
|
{
|
||||||
this->drawDipAngle(centerX, centerY, ifdir, dirmax, lineNumber, lineHeight, lineThickness, lineColor,
|
this->drawDipAngle(centerX, centerY, ifdir, dirmax, lineNumber, lineHeight, lineThickness, lineColor,
|
||||||
drawHistogram, baselineWidth, baselineColor, LeftVal, RightVal);
|
drawHistogram, baselineWidth, baselineColor, LeftVal, RightVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
flDep += nstep;
|
flDep += nstep;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this->replot();
|
this->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -10550,7 +10531,7 @@ void QMyCustomPlot::s_changeRoseProperty(QVariantMap variantMap)
|
||||||
bool bTableData = false;
|
bool bTableData = false;
|
||||||
if(dataType == 1)
|
if(dataType == 1)
|
||||||
{
|
{
|
||||||
dataType = true;
|
bTableData = true;
|
||||||
}
|
}
|
||||||
QString azimuthCurve = variantMap["m_pl_azimuthCurve"].toString();
|
QString azimuthCurve = variantMap["m_pl_azimuthCurve"].toString();
|
||||||
QString inclinationCurve = variantMap["m_pl_inclinationCurve"].toString();
|
QString inclinationCurve = variantMap["m_pl_inclinationCurve"].toString();
|
||||||
|
|
@ -10585,14 +10566,20 @@ void QMyCustomPlot::s_changeRoseProperty(QVariantMap variantMap)
|
||||||
|
|
||||||
// int nstep, double LeftVal, double RightVal
|
// int nstep, double LeftVal, double RightVal
|
||||||
|
|
||||||
this->drawRose(bTableData, azimuthCurve, inclinationCurve,
|
|
||||||
m_rose_depth_field, m_rose_azimuth_field, m_rose_dip_field, m_rose_attribute_field,
|
this->drawRose(bTableData, azimuthCurve, inclinationCurve,
|
||||||
csCurveGrad, LeftVal3, RightVal3, m_pl_fontScale,
|
m_rose_depth_field, m_rose_azimuth_field, m_rose_dip_field, m_rose_attribute_field,
|
||||||
m_rose_sector_enabled, m_rose_circle_radius_cm, m_rose_radiation_circle_enabled, m_rose_azimuth_print_interval, m_rose_circle_line_color,
|
csCurveGrad, LeftVal3, RightVal3, m_pl_fontScale,
|
||||||
m_rose_circle_line_width, m_rose_stress_line_color, m_rose_collapse_line_color, m_rose_draw_radiation_line, m_rose_draw_wellbore_collapse,
|
m_rose_sector_enabled, m_rose_circle_radius_cm, m_rose_radiation_circle_enabled, m_rose_azimuth_print_interval, m_rose_circle_line_color,
|
||||||
m_rose_fill_enabled, m_rose_draw_annotation,
|
m_rose_circle_line_width, m_rose_stress_line_color, m_rose_collapse_line_color, m_rose_draw_radiation_line, m_rose_draw_wellbore_collapse,
|
||||||
m_pl_statInterval, m_pl_minInclination, m_pl_maxInclination);
|
m_rose_fill_enabled, m_rose_draw_annotation,
|
||||||
|
m_pl_statInterval, m_pl_minInclination, m_pl_maxInclination);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCurveDANG,
|
void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCurveDANG,
|
||||||
QString qsDepth, QString qsDIR, QString qsDIP, QString qsID,
|
QString qsDepth, QString qsDIR, QString qsDIP, QString qsID,
|
||||||
QString csCurveGrad, double m_LeftVal3, double m_RightVal3, QFont m_pl_fontScale,
|
QString csCurveGrad, double m_LeftVal3, double m_RightVal3, QFont m_pl_fontScale,
|
||||||
|
|
@ -10612,16 +10599,10 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
m_csCurveDDIR = csCurveDDIR; // 方位曲线
|
m_csCurveDDIR = csCurveDDIR; // 方位曲线
|
||||||
m_csCurveDANG = csCurveDANG; //倾角曲线
|
m_csCurveDANG = csCurveDANG; //倾角曲线
|
||||||
m_csCurveGrad = csCurveGrad;
|
m_csCurveGrad = csCurveGrad;
|
||||||
|
|
||||||
// m_qsDepth="DEPT"; // 深度字段
|
|
||||||
// m_qsDIR="DDIR"; // 方位字段
|
|
||||||
// m_qsDIP="DANG";// 倾角字段
|
|
||||||
// m_qsID = "ID";
|
|
||||||
m_qsDepth= qsDepth; // 深度字段
|
m_qsDepth= qsDepth; // 深度字段
|
||||||
m_qsDIR= qsDIR; // 方位字段
|
m_qsDIR= qsDIR; // 方位字段
|
||||||
m_qsDIP= qsDIP;// 倾角字段
|
m_qsDIP= qsDIP;// 倾角字段
|
||||||
m_qsID = qsID;
|
m_qsID = qsID;
|
||||||
|
|
||||||
m_qsTable="FRAC_HOLE.TABLE";
|
m_qsTable="FRAC_HOLE.TABLE";
|
||||||
|
|
||||||
flag = Refurbish();
|
flag = Refurbish();
|
||||||
|
|
@ -10635,12 +10616,6 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
float flVal = 0.0f;
|
float flVal = 0.0f;
|
||||||
float x,y,x1,y1,x2,y2;
|
float x,y,x1,y1,x2,y2;
|
||||||
float ifdir[360];
|
float ifdir[360];
|
||||||
|
|
||||||
|
|
||||||
// int nstep = 5;
|
|
||||||
// float m_LeftVal3 = 0;
|
|
||||||
// float m_RightVal3 = 100.0;
|
|
||||||
|
|
||||||
float mind=min(m_RightVal , m_LeftVal);
|
float mind=min(m_RightVal , m_LeftVal);
|
||||||
float maxd=max(m_RightVal , m_LeftVal);
|
float maxd=max(m_RightVal , m_LeftVal);
|
||||||
float dirmax,dipmax,dr;
|
float dirmax,dipmax,dr;
|
||||||
|
|
@ -10658,6 +10633,9 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
|
|
||||||
ftmpSdep = -m_iY2;
|
ftmpSdep = -m_iY2;
|
||||||
ftmpEdep = -m_iY1;
|
ftmpEdep = -m_iY1;
|
||||||
|
|
||||||
|
m_rose_fill_enabled = false;
|
||||||
|
m_bJykt = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nPointNum = m_FracTabList.count();
|
int nPointNum = m_FracTabList.count();
|
||||||
|
|
@ -10666,13 +10644,6 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
float flDep = tmp * nstep;
|
float flDep = tmp * nstep;
|
||||||
|
|
||||||
double pi = 3.1415926535;
|
double pi = 3.1415926535;
|
||||||
// 射线
|
|
||||||
// bool m_bGrid = true;
|
|
||||||
// 井眼垮塌
|
|
||||||
// bool m_bJykt = true;
|
|
||||||
// 标注
|
|
||||||
// bool m_bHint = true;
|
|
||||||
|
|
||||||
m_Curve.DepLevel = 0.5;
|
m_Curve.DepLevel = 0.5;
|
||||||
while ( 1)
|
while ( 1)
|
||||||
{
|
{
|
||||||
|
|
@ -10927,8 +10898,6 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
pol->setBrushColor(QColor(m_rose_stress_line_color));
|
pol->setBrushColor(QColor(m_rose_stress_line_color));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ( m_bJykt && iIndex >=0 )
|
if ( m_bJykt && iIndex >=0 )
|
||||||
{
|
{
|
||||||
// 绘制垮塌方向
|
// 绘制垮塌方向
|
||||||
|
|
@ -10959,9 +10928,314 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur
|
||||||
this->addQCPItemLine(this, centerY,centerX, QPointF(x1, y1), QPointF(x3, y3), collapsePen);
|
this->addQCPItemLine(this, centerY,centerX, QPointF(x1, y1), QPointF(x3, y3), collapsePen);
|
||||||
this->addQCPItemLine(this, centerY,centerX, QPointF(x3, y3), QPointF(x2, y2), collapsePen);
|
this->addQCPItemLine(this, centerY,centerX, QPointF(x3, y3), QPointF(x2, y2), collapsePen);
|
||||||
}
|
}
|
||||||
|
flDep += nstep;
|
||||||
|
}
|
||||||
|
this->replot();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::drawTabRose(
|
||||||
|
bool bTableData,
|
||||||
|
QString csCurveDDIR,
|
||||||
|
QString csCurveDANG,
|
||||||
|
QString qsDepth,
|
||||||
|
QString qsDIR,
|
||||||
|
QString qsDIP,
|
||||||
|
QString qsID,
|
||||||
|
QString csCurveGrad,
|
||||||
|
double m_LeftVal3,
|
||||||
|
double m_RightVal3,
|
||||||
|
QFont m_pl_fontScale,
|
||||||
|
int m_nArc,
|
||||||
|
int nR,
|
||||||
|
int m_nCircle,
|
||||||
|
int m_nAzimStep,
|
||||||
|
QColor m_rose_circle_line_color,
|
||||||
|
int m_rose_circle_line_width,
|
||||||
|
QColor m_rose_stress_line_color,
|
||||||
|
QColor m_rose_collapse_line_color,
|
||||||
|
bool m_bGrid,
|
||||||
|
bool m_bJykt,
|
||||||
|
bool m_rose_fill_enabled,
|
||||||
|
bool m_bHint,
|
||||||
|
int nstep,
|
||||||
|
float m_LeftVal,
|
||||||
|
float m_RightVal
|
||||||
|
)
|
||||||
|
{
|
||||||
|
bool flag = true;
|
||||||
|
|
||||||
|
this->clearGraphs();
|
||||||
|
this->clearItems();
|
||||||
|
|
||||||
|
m_bTableData = bTableData;
|
||||||
|
m_csCurveDDIR = csCurveDDIR;
|
||||||
|
m_csCurveDANG = csCurveDANG;
|
||||||
|
m_csCurveGrad = csCurveGrad;
|
||||||
|
m_qsDepth = qsDepth;
|
||||||
|
m_qsDIR = qsDIR;
|
||||||
|
m_qsDIP = qsDIP;
|
||||||
|
m_qsID = qsID;
|
||||||
|
m_qsTable = "FRAC_HOLE.TABLE";
|
||||||
|
|
||||||
|
flag = Refurbish();
|
||||||
|
if (!flag) return;
|
||||||
|
|
||||||
|
// 必须读取裂缝表 + 裂缝定义
|
||||||
|
ReadFracDef();
|
||||||
|
int nPointNum = m_FracTabList.count();
|
||||||
|
int nFracType = m_FracDefList.count();
|
||||||
|
|
||||||
|
if (nPointNum < 1) return;
|
||||||
|
|
||||||
|
// 初始化裂缝类型默认全部绘制
|
||||||
|
for (int i = 0; i < nFracType; i++) {
|
||||||
|
m_bTypeDraw[i] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPen wPen(m_rose_circle_line_color, m_rose_circle_line_width);
|
||||||
|
double centerX = this->m_iX2 / 2;
|
||||||
|
float flVal = 0.0f;
|
||||||
|
float x, y, x1, y1, x2, y2;
|
||||||
|
float ifdir[360] = {0};
|
||||||
|
float mind = qMin(m_RightVal, m_LeftVal);
|
||||||
|
float maxd = qMax(m_RightVal, m_LeftVal);
|
||||||
|
float dirmax, dr;
|
||||||
|
float deps;
|
||||||
|
|
||||||
|
// 深度范围(表格数据使用屏幕坐标)
|
||||||
|
float ftmpSdep = -m_iY2;
|
||||||
|
float ftmpEdep = -m_iY1;
|
||||||
|
|
||||||
|
int tmp = ftmpSdep / nstep;
|
||||||
|
float flDep = tmp * nstep;
|
||||||
|
double pi = 3.1415926535;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if ((flDep >= ftmpEdep + nstep) || flDep >= ftmpEdep) break;
|
||||||
|
|
||||||
|
double tempf = flDep + nstep / 2.0;
|
||||||
|
double centerY = tempf * -1.0;
|
||||||
|
|
||||||
|
// ====================== 1. 画最外层圆 ======================
|
||||||
|
QCPItemEllipse* pEse = new QCPItemEllipse(this);
|
||||||
|
wPen.setWidth(m_rose_circle_line_width);
|
||||||
|
pEse->setPen(wPen);
|
||||||
|
pEse->m_bCustom = true;
|
||||||
|
pEse->m_nRadius = nR;
|
||||||
|
pEse->topLeft->setCoords(centerY, centerX);
|
||||||
|
pEse->bottomRight->setCoords(centerY, centerX);
|
||||||
|
|
||||||
|
// ====================== 2. 画十字线 ======================
|
||||||
|
for (int k = 0; k < 4; k++) {
|
||||||
|
QCPItemLine* pLine1 = new QCPItemLine(this);
|
||||||
|
pLine1->m_bCustom = true;
|
||||||
|
pLine1->m_dr = qDegreesToRadians(k * 90.0);
|
||||||
|
pLine1->m_nRadius = 0;
|
||||||
|
pLine1->m_nTailLen = nR;
|
||||||
|
pLine1->setPen(wPen);
|
||||||
|
pLine1->start->setCoords(centerY, centerX);
|
||||||
|
pLine1->end->setCoords(centerY, centerX);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 3. 方位标注 ======================
|
||||||
|
if (m_bHint) {
|
||||||
|
int psize = 15;
|
||||||
|
flVal = m_nAzimStep * 360.0 / m_nArc;
|
||||||
|
for (int i = 0; i < 360; i += (int)flVal) {
|
||||||
|
QCPItemText* mItemTitle = new QCPItemText(this);
|
||||||
|
mItemTitle->position->setCoords(centerY, centerX);
|
||||||
|
mItemTitle->setText(QString::number(i));
|
||||||
|
mItemTitle->setFont(m_pl_fontScale);
|
||||||
|
mItemTitle->setColor(m_rose_circle_line_color);
|
||||||
|
dr = i * 2 * pi / 360.0;
|
||||||
|
mItemTitle->m_fx = (nR + psize * 0.85) * sin(dr);
|
||||||
|
mItemTitle->m_fy = (nR + psize * 0.85) * cos(dr);
|
||||||
|
mItemTitle->m_bCustom = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 4. 辐射线 ======================
|
||||||
|
if (m_bGrid) {
|
||||||
|
wPen.setWidth(1);
|
||||||
|
double st = 360.0 / m_nArc;
|
||||||
|
for (int i = 0; i < m_nArc; i++) {
|
||||||
|
int ntmp = i % 9;
|
||||||
|
if (ntmp != 0) {
|
||||||
|
QCPItemLine* pLine = new QCPItemLine(this);
|
||||||
|
pLine->m_bCustom = true;
|
||||||
|
pLine->m_dr = qDegreesToRadians(i * st);
|
||||||
|
pLine->m_nRadius = 0;
|
||||||
|
pLine->m_nTailLen = nR;
|
||||||
|
pLine->setPen(wPen);
|
||||||
|
pLine->start->setCoords(centerY, centerX);
|
||||||
|
pLine->end->setCoords(centerY, centerX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 5. 辐射圈(同心圆) ======================
|
||||||
|
if (m_bGrid) {
|
||||||
|
qreal currentRadius = 0;
|
||||||
|
for (int i = 0; i < m_nCircle; i++) {
|
||||||
|
QCPItemEllipse* pEseInner = new QCPItemEllipse(this);
|
||||||
|
pEseInner->setPen(wPen);
|
||||||
|
pEseInner->m_bCustom = true;
|
||||||
|
currentRadius -= nR * 1.0 / m_nCircle;
|
||||||
|
pEseInner->m_nRadius = currentRadius;
|
||||||
|
pEseInner->topLeft->setCoords(centerY, centerX);
|
||||||
|
pEseInner->bottomRight->setCoords(centerY, centerX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 6. 表格数据统计方位 ======================
|
||||||
|
memset(ifdir, 0, sizeof(ifdir));
|
||||||
|
float x1Step = 360.0 / m_nArc;
|
||||||
|
|
||||||
|
// 遍历所有裂缝点
|
||||||
|
for (int i = 0; i < nPointNum; i++) {
|
||||||
|
FRAC_TABLE frac = m_FracTabList.at(i);
|
||||||
|
bool bDraw = false;
|
||||||
|
|
||||||
|
// 匹配裂缝类型
|
||||||
|
for (int j = 0; j < nFracType; j++) {
|
||||||
|
FRAC_DEF fd = m_FracDefList.at(j);
|
||||||
|
if ((int)frac.ID == fd.iCode) {
|
||||||
|
bDraw = m_bTypeDraw[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bDraw) continue;
|
||||||
|
|
||||||
|
deps = frac.DEP;
|
||||||
|
|
||||||
|
// 判断是否在当前统计深度段内
|
||||||
|
if (deps >= flDep && deps < flDep + nstep) {
|
||||||
|
float dipVal = frac.DIPorS;
|
||||||
|
if (dipVal > maxd || dipVal < mind) continue;
|
||||||
|
|
||||||
|
float dirVal = frac.DIR;
|
||||||
|
int j = dirVal / x1Step;
|
||||||
|
if (j >= 0 && j < m_nArc + 1) {
|
||||||
|
ifdir[j]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 7. 找最大值 ======================
|
||||||
|
dirmax = 0;
|
||||||
|
int iIndex = -1;
|
||||||
|
for (int i = 0; i <= m_nArc; i++) {
|
||||||
|
if (dirmax < ifdir[i]) {
|
||||||
|
iIndex = i;
|
||||||
|
dirmax = ifdir[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dirmax == 0) dirmax = 1;
|
||||||
|
|
||||||
|
// ====================== 8. 绘制玫瑰瓣 ======================
|
||||||
|
flVal = 2 * pi / m_nArc;
|
||||||
|
QPolygonF myPolygon;
|
||||||
|
float oldx = 9999, oldy = 9999;
|
||||||
|
|
||||||
|
for (int i = 0; i <= m_nArc; i++) {
|
||||||
|
dr = i * flVal;
|
||||||
|
float px = ifdir[i] * nR * sin(dr) / dirmax;
|
||||||
|
float py = ifdir[i] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
if (oldx != px || oldy != py) {
|
||||||
|
myPolygon << QPointF(px, py);
|
||||||
|
oldx = px; oldy = py;
|
||||||
|
}
|
||||||
|
|
||||||
|
dr = (i + 1) * flVal;
|
||||||
|
px = ifdir[i] * nR * sin(dr) / dirmax;
|
||||||
|
py = ifdir[i] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
if (oldx != px || oldy != py) {
|
||||||
|
myPolygon << QPointF(px, py);
|
||||||
|
oldx = px; oldy = py;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 绘制第一个玫瑰瓣
|
||||||
|
if (iIndex >= 0) {
|
||||||
|
QCPItemPolygon* pol = new QCPItemPolygon(this);
|
||||||
|
pol->topLeft->setCoords(centerY, centerX);
|
||||||
|
pol->bottomRight->setCoords(centerY, centerX);
|
||||||
|
pol->setPoints(myPolygon);
|
||||||
|
|
||||||
|
if (m_rose_fill_enabled)
|
||||||
|
m_rose_stress_line_color.setAlpha(255);
|
||||||
|
else
|
||||||
|
m_rose_stress_line_color.setAlpha(0);
|
||||||
|
|
||||||
|
pol->setBrushColor(m_rose_stress_line_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 9. 绘制反向玫瑰瓣 ======================
|
||||||
|
myPolygon.clear();
|
||||||
|
float tempfArc = m_nArc / 2.0;
|
||||||
|
|
||||||
|
for (int i = 0; i <= m_nArc; i++) {
|
||||||
|
dr = i * flVal - tempfArc * flVal;
|
||||||
|
float px = ifdir[i] * nR * sin(dr) / dirmax;
|
||||||
|
float py = ifdir[i] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
if (oldx != px || oldy != py) {
|
||||||
|
myPolygon << QPointF(px, py);
|
||||||
|
oldx = px; oldy = py;
|
||||||
|
}
|
||||||
|
|
||||||
|
dr = (i + 1) * flVal - tempfArc * flVal;
|
||||||
|
px = ifdir[i] * nR * sin(dr) / dirmax;
|
||||||
|
py = ifdir[i] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
if (oldx != px || oldy != py) {
|
||||||
|
myPolygon << QPointF(px, py);
|
||||||
|
oldx = px; oldy = py;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iIndex >= 0) {
|
||||||
|
QCPItemPolygon* pol2 = new QCPItemPolygon(this);
|
||||||
|
pol2->topLeft->setCoords(centerY, centerX);
|
||||||
|
pol2->bottomRight->setCoords(centerY, centerX);
|
||||||
|
pol2->setPoints(myPolygon);
|
||||||
|
pol2->setBrushColor(m_rose_stress_line_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ====================== 10. 绘制垮塌方向线 ======================
|
||||||
|
if (m_bJykt && iIndex >= 0) {
|
||||||
|
QPen collapsePen(m_rose_collapse_line_color, 2);
|
||||||
|
|
||||||
|
dr = iIndex * flVal - pi / 2;
|
||||||
|
x1 = ifdir[iIndex] * nR * sin(dr) / dirmax;
|
||||||
|
y1 = ifdir[iIndex] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
dr = iIndex * flVal + pi / 2;
|
||||||
|
x2 = ifdir[iIndex] * nR * sin(dr) / dirmax;
|
||||||
|
y2 = ifdir[iIndex] * nR * cos(dr) / dirmax;
|
||||||
|
|
||||||
|
this->addQCPItemLine(this, centerY, centerX, QPointF(x1, y1), QPointF(x2, y2), collapsePen);
|
||||||
|
|
||||||
|
// 小箭头
|
||||||
|
dr = iIndex * flVal;
|
||||||
|
float x3 = 0.1 * ifdir[iIndex] * nR * sin(dr) / dirmax;
|
||||||
|
float y3 = 0.1 * ifdir[iIndex] * nR * cos(dr) / dirmax;
|
||||||
|
this->addQCPItemLine(this, centerY, centerX, QPointF(x1, y1), QPointF(x3, y3), collapsePen);
|
||||||
|
this->addQCPItemLine(this, centerY, centerX, QPointF(x3, y3), QPointF(x2, y2), collapsePen);
|
||||||
|
|
||||||
|
dr = iIndex * flVal - pi;
|
||||||
|
x3 = 0.1 * ifdir[iIndex] * nR * sin(dr) / dirmax;
|
||||||
|
y3 = 0.1 * ifdir[iIndex] * nR * cos(dr) / dirmax;
|
||||||
|
this->addQCPItemLine(this, centerY, centerX, QPointF(x1, y1), QPointF(x3, y3), collapsePen);
|
||||||
|
this->addQCPItemLine(this, centerY, centerX, QPointF(x3, y3), QPointF(x2, y2), collapsePen);
|
||||||
|
}
|
||||||
|
|
||||||
flDep += nstep;
|
flDep += nstep;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->replot();
|
this->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -663,6 +663,34 @@ public:
|
||||||
int m_nArc, int m_rose_circle_radius_cm, int m_rose_radiation_circle_enabled, int m_rose_azimuth_print_interval, QColor m_rose_circle_line_color,
|
int m_nArc, int m_rose_circle_radius_cm, int m_rose_radiation_circle_enabled, int m_rose_azimuth_print_interval, QColor m_rose_circle_line_color,
|
||||||
int m_rose_circle_line_width, QColor m_rose_stress_line_color, QColor m_rose_collapse_line_color, bool m_rose_draw_radiation_line, bool m_rose_draw_wellbore_collapse,
|
int m_rose_circle_line_width, QColor m_rose_stress_line_color, QColor m_rose_collapse_line_color, bool m_rose_draw_radiation_line, bool m_rose_draw_wellbore_collapse,
|
||||||
bool m_rose_fill_enabled, bool m_rose_draw_annotation, int nstep, float m_LeftVal, float m_RightVal);
|
bool m_rose_fill_enabled, bool m_rose_draw_annotation, int nstep, float m_LeftVal, float m_RightVal);
|
||||||
|
void drawTabRose(
|
||||||
|
bool bTableData,
|
||||||
|
QString csCurveDDIR,
|
||||||
|
QString csCurveDANG,
|
||||||
|
QString qsDepth,
|
||||||
|
QString qsDIR,
|
||||||
|
QString qsDIP,
|
||||||
|
QString qsID,
|
||||||
|
QString csCurveGrad,
|
||||||
|
double m_LeftVal3,
|
||||||
|
double m_RightVal3,
|
||||||
|
QFont m_pl_fontScale,
|
||||||
|
int m_nArc,
|
||||||
|
int nR,
|
||||||
|
int m_nCircle,
|
||||||
|
int m_nAzimStep,
|
||||||
|
QColor m_rose_circle_line_color,
|
||||||
|
int m_rose_circle_line_width,
|
||||||
|
QColor m_rose_stress_line_color,
|
||||||
|
QColor m_rose_collapse_line_color,
|
||||||
|
bool m_bGrid,
|
||||||
|
bool m_bJykt,
|
||||||
|
bool m_rose_fill_enabled,
|
||||||
|
bool m_bHint,
|
||||||
|
int nstep,
|
||||||
|
float m_LeftVal,
|
||||||
|
float m_RightVal
|
||||||
|
);
|
||||||
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
|
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user