|
@@ -330,7 +330,7 @@ namespace OTSGBCalculate
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
}
|
|
}
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
- if (dLengthWidthRatio >= 3)//长宽比大于3的颗粒,根据化学元素不同,分为A类和C类
|
|
|
|
|
|
+ if (dLengthWidthRatio >= 3)
|
|
{
|
|
{
|
|
//A or C class
|
|
//A or C class
|
|
|
|
|
|
@@ -351,7 +351,7 @@ namespace OTSGBCalculate
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
- else//长宽比小于3的颗粒,有3种情况,一种是串条状的B类颗粒,一种是单独的D类颗粒,如果费雷特直径大于13则为DS类颗粒
|
|
|
|
|
|
+ else
|
|
{
|
|
{
|
|
|
|
|
|
// B, or D or DS
|
|
// B, or D or DS
|
|
@@ -384,7 +384,7 @@ namespace OTSGBCalculate
|
|
for (auto gbp : listAGBparts)
|
|
for (auto gbp : listAGBparts)
|
|
{
|
|
{
|
|
gbp->myType = GB_CLASSIFY_TYPE::A_TYPE;
|
|
gbp->myType = GB_CLASSIFY_TYPE::A_TYPE;
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth(GB_CLASSIFY_TYPE::A_TYPE);
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth(GB_CLASSIFY_TYPE::A_TYPE);
|
|
gbp->myWidth = wt;
|
|
gbp->myWidth = wt;
|
|
switch (wt)
|
|
switch (wt)
|
|
@@ -403,7 +403,7 @@ namespace OTSGBCalculate
|
|
//process C class
|
|
//process C class
|
|
CGBParticleList listCGBparts;
|
|
CGBParticleList listCGBparts;
|
|
ConnectStringParts(listCparts, listCGBparts);
|
|
ConnectStringParts(listCparts, listCGBparts);
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
for (auto gbp : listCGBparts)
|
|
for (auto gbp : listCGBparts)
|
|
{
|
|
{
|
|
gbp->myType = GB_CLASSIFY_TYPE::C_TYPE;
|
|
gbp->myType = GB_CLASSIFY_TYPE::C_TYPE;
|
|
@@ -437,7 +437,7 @@ namespace OTSGBCalculate
|
|
{*/
|
|
{*/
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::D_TYPE;//no matter what chemical it contains,as long as the aspect ratio is less than 3,then it's a D type.
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::D_TYPE;//no matter what chemical it contains,as long as the aspect ratio is less than 3,then it's a D type.
|
|
|
|
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::D_TYPE);
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::D_TYPE);
|
|
pGBParticle->myWidth = wt;
|
|
pGBParticle->myWidth = wt;
|
|
switch (wt)
|
|
switch (wt)
|
|
@@ -504,7 +504,7 @@ namespace OTSGBCalculate
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::B_TYPE;
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::B_TYPE;
|
|
|
|
|
|
|
|
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::B_TYPE);
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::B_TYPE);
|
|
pGBParticle->myWidth = wt;
|
|
pGBParticle->myWidth = wt;
|
|
switch (wt)
|
|
switch (wt)
|
|
@@ -602,7 +602,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
{
|
|
{
|
|
- //获取最小外接矩形的宽和高
|
|
|
|
|
|
+
|
|
auto p1 = p->myOTSParts[0];
|
|
auto p1 = p->myOTSParts[0];
|
|
double h = p1->GetDMax();
|
|
double h = p1->GetDMax();
|
|
double w = p1->GetDMin();
|
|
double w = p1->GetDMin();
|
|
@@ -613,7 +613,7 @@ namespace OTSGBCalculate
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
}
|
|
}
|
|
|
|
|
|
- if (dLengthWidthRatio < 3)//长宽比小于3的颗粒,且为孤立的颗粒,根据是否含硫化物,分为D类和DSulfide类,如果费雷特直径大于13 归为DS类
|
|
|
|
|
|
+ if (dLengthWidthRatio < 3)//when aspect<3,is isolate,if contain S then it's DSulfide,else it's D,if the feret>13,then it's DS.
|
|
{
|
|
{
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
if (dFeretDiameter >= 13)
|
|
if (dFeretDiameter >= 13)
|
|
@@ -668,7 +668,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
{
|
|
{
|
|
- //获取最小外接矩形的宽和高
|
|
|
|
|
|
+
|
|
auto p1 = p->myOTSParts[0];
|
|
auto p1 = p->myOTSParts[0];
|
|
double h = p1->GetDMax();
|
|
double h = p1->GetDMax();
|
|
double w = p1->GetDMin();
|
|
double w = p1->GetDMin();
|
|
@@ -679,7 +679,7 @@ namespace OTSGBCalculate
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
}
|
|
}
|
|
|
|
|
|
- if (dLengthWidthRatio < 3)//长宽比小于3的颗粒,且为孤立的颗粒,根据是否含硫化物,分为D类和DSulfide类,如果费雷特直径大于13 归为DS类
|
|
|
|
|
|
+ if (dLengthWidthRatio < 3)
|
|
{
|
|
{
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
if (dFeretDiameter >= 13)
|
|
if (dFeretDiameter >= 13)
|
|
@@ -733,7 +733,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
if (p->myOTSParts.size() == 1)//it's a isolated part
|
|
{
|
|
{
|
|
- //获取最小外接矩形的宽和高
|
|
|
|
|
|
+
|
|
auto p1 = p->myOTSParts[0];
|
|
auto p1 = p->myOTSParts[0];
|
|
double h = p1->GetDMax();
|
|
double h = p1->GetDMax();
|
|
double w = p1->GetDMin();
|
|
double w = p1->GetDMin();
|
|
@@ -744,7 +744,7 @@ namespace OTSGBCalculate
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
}
|
|
}
|
|
|
|
|
|
- if (dLengthWidthRatio < 3)//长宽比小于3的颗粒,且为孤立的颗粒,根据是否含硫化物,分为D类和DSulfide类,如果费雷特直径大于13 归为DS类
|
|
|
|
|
|
+ if (dLengthWidthRatio < 3)
|
|
{
|
|
{
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
double dFeretDiameter = p1->GetFeretDiameter();
|
|
if (dFeretDiameter >= 13)
|
|
if (dFeretDiameter >= 13)
|
|
@@ -836,7 +836,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- //获取最大长度和最小宽度
|
|
|
|
|
|
+
|
|
double h = pParticle->GetDMax();
|
|
double h = pParticle->GetDMax();
|
|
double w = pParticle->GetDMin();
|
|
double w = pParticle->GetDMin();
|
|
double dLengthWidthRatio = h / w;
|
|
double dLengthWidthRatio = h / w;
|
|
@@ -847,7 +847,7 @@ namespace OTSGBCalculate
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
CGBParticlePtr gbp = CGBParticlePtr(new GBParticle());
|
|
CGBParticlePtr gbp = CGBParticlePtr(new GBParticle());
|
|
gbp->myOTSParts.push_back(pParticle);
|
|
gbp->myOTSParts.push_back(pParticle);
|
|
- if (dLengthWidthRatio >= 3)//长宽比大于3的颗粒,根据化学元素不同,分为A类和C类
|
|
|
|
|
|
+ if (dLengthWidthRatio >= 3)
|
|
{
|
|
{
|
|
//A or C class
|
|
//A or C class
|
|
|
|
|
|
@@ -855,7 +855,7 @@ namespace OTSGBCalculate
|
|
if (nChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
if (nChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
{
|
|
{
|
|
// A
|
|
// A
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth(GB_CLASSIFY_TYPE::A_TYPE);
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth(GB_CLASSIFY_TYPE::A_TYPE);
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
{
|
|
{
|
|
@@ -867,7 +867,7 @@ namespace OTSGBCalculate
|
|
else if (nChemicalType == GB_CHEMICAL_TYPE::CHE_O)
|
|
else if (nChemicalType == GB_CHEMICAL_TYPE::CHE_O)
|
|
{
|
|
{
|
|
// C
|
|
// C
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth( GB_CLASSIFY_TYPE::C_TYPE);
|
|
GB_WIDTH_TYPE wt = gbp->CaculateLevelWidth( GB_CLASSIFY_TYPE::C_TYPE);
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
{
|
|
{
|
|
@@ -876,7 +876,7 @@ namespace OTSGBCalculate
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else//长宽比小于3的颗粒,有3种情况,一种是串条状的B类颗粒,一种是单独的D类颗粒,如果费雷特直径大于13则为DS类颗粒
|
|
|
|
|
|
+ else//when aspect<3,three cases,one is string B type,one is the single D type part,if the feret diameter >13 then is DS type.
|
|
{
|
|
{
|
|
// B, or D or DS
|
|
// B, or D or DS
|
|
|
|
|
|
@@ -907,7 +907,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::D_TYPE;
|
|
pGBParticle->myType = GB_CLASSIFY_TYPE::D_TYPE;
|
|
|
|
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+ //calculate the GB_WIDTH_TYPE
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::D_TYPE);
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::D_TYPE);
|
|
|
|
|
|
|
|
|
|
@@ -917,12 +917,12 @@ namespace OTSGBCalculate
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
- else//找到了相邻接的颗粒,不是孤立的则为B类
|
|
|
|
|
|
+ else//find adjacent part ,then it is B type.
|
|
{
|
|
{
|
|
- pGBParticle->myType = GB_CLASSIFY_TYPE::B_TYPE;//把类型设为有效类型
|
|
|
|
|
|
+ pGBParticle->myType = GB_CLASSIFY_TYPE::B_TYPE;
|
|
|
|
|
|
|
|
|
|
- //计算颗粒宽度是属于细系粗系还是超尺寸
|
|
|
|
|
|
+ //calculate the GB_WIDTH_TYPE
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::B_TYPE);
|
|
GB_WIDTH_TYPE wt = pGBParticle->CaculateLevelWidth( GB_CLASSIFY_TYPE::B_TYPE);
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
if (wt == GB_WIDTH_TYPE::THIN || wt == GB_WIDTH_TYPE::WIDE || wt == GB_WIDTH_TYPE::SUPER)
|
|
{
|
|
{
|
|
@@ -969,7 +969,7 @@ namespace OTSGBCalculate
|
|
{
|
|
{
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- //获取最大长度和最小宽度
|
|
|
|
|
|
+
|
|
double h = pParticle->GetDMax();
|
|
double h = pParticle->GetDMax();
|
|
double dLengthWidthRatio = h / w;
|
|
double dLengthWidthRatio = h / w;
|
|
if (dLengthWidthRatio < 1)
|
|
if (dLengthWidthRatio < 1)
|
|
@@ -977,7 +977,7 @@ namespace OTSGBCalculate
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
dLengthWidthRatio = 1 / dLengthWidthRatio;
|
|
}
|
|
}
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
GB_CHEMICAL_TYPE nChemicalType = GBParticle::IdentifyPartChemicalType(pParticle);
|
|
- if (dLengthWidthRatio >= 3)//长宽比大于3的颗粒,根据化学元素不同,分为A类和C类
|
|
|
|
|
|
+ if (dLengthWidthRatio >= 3)//when aspect>3 ,according to the chemical ,classify them to A or C.
|
|
{
|
|
{
|
|
//A or C class
|
|
//A or C class
|
|
if (nChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
if (nChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
@@ -992,7 +992,7 @@ namespace OTSGBCalculate
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
- else//长宽比小于3的颗粒,有3种情况,一种是串条状的B类颗粒,一种是单独的D类颗粒,如果费雷特直径大于13则为DS类颗粒
|
|
|
|
|
|
+ else//when aspect<3,three cases,one is string B type,one is the single D type part,if the feret diameter >13 then is DS type.
|
|
{
|
|
{
|
|
|
|
|
|
// B, or D or DS
|
|
// B, or D or DS
|
|
@@ -1112,12 +1112,12 @@ namespace OTSGBCalculate
|
|
}
|
|
}
|
|
double dd = 0, ds = 0;
|
|
double dd = 0, ds = 0;
|
|
ds = abs(ptParticleCenter.x - ptBParticleCenter.x);
|
|
ds = abs(ptParticleCenter.x - ptBParticleCenter.x);
|
|
- if (ds < 15)//认为两个颗粒在一条竖直线上,但不在一起
|
|
|
|
|
|
+ if (ds < 15)//consider these two parts are on the same vertical line
|
|
{
|
|
{
|
|
if (Bottom >= TopB)//current particle is on the above
|
|
if (Bottom >= TopB)//current particle is on the above
|
|
{
|
|
{
|
|
dd = Bottom - TopB;
|
|
dd = Bottom - TopB;
|
|
- if (dd < 40)//认为这两个颗粒在一个串条上
|
|
|
|
|
|
+ if (dd < 40)//consider these two parts are in the same string
|
|
{
|
|
{
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -1143,11 +1143,11 @@ namespace OTSGBCalculate
|
|
return false;
|
|
return false;
|
|
});
|
|
});
|
|
|
|
|
|
- if (adjacentPart == listStringparts.end())//没找到
|
|
|
|
|
|
+ if (adjacentPart == listStringparts.end())//don't find
|
|
{
|
|
{
|
|
|
|
|
|
}
|
|
}
|
|
- else//找到了相邻接的颗粒,
|
|
|
|
|
|
+ else//find adjacent part
|
|
{
|
|
{
|
|
pParticle->connectParticles.push_back( *adjacentPart);
|
|
pParticle->connectParticles.push_back( *adjacentPart);
|
|
adjacentPart->get()->connectParticles .push_back( pParticle);
|
|
adjacentPart->get()->connectParticles .push_back( pParticle);
|