123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578 |
- #pragma once
- #include "stdafx.h"
- #include "otsdataconst.h"
- #include "CGBLevel.h"
- #include "GBFieldData.h"
- #include <map>
- namespace OTSGBCalculate
- {
- using namespace std;
- using namespace OTSDATA;
- CGBLevel::CGBLevel() // constructor
- {
- Init();
- }
- CGBLevel::CGBLevel(CGBFieldData* GBField, GB_LEVEL_TYPE a_nLevel)
- {
- m_GBField = GBField;
- m_nLevel = a_nLevel;
- }
- CGBLevel::CGBLevel(const CGBLevel& a_oSource) // copy constructor
- {
- // can't copy itself
- if (&a_oSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(a_oSource);
- }
- CGBLevel::CGBLevel(CGBLevel* a_poSource) // copy constructor
- {
- // input check
- ASSERT(a_poSource);
- if (!a_poSource)
- {
- return;
- }
- // can't copy itself
- if (a_poSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(*a_poSource);
- }
- CGBLevel& CGBLevel::operator=(const CGBLevel& a_oSource) // =operator
- {
- // cleanup
- Cleanup();
- // copy the class data over
- Duplicate(a_oSource);
- // return class
- return *this;
- }
- BOOL CGBLevel::operator==(const CGBLevel& a_oSource) // =operator
- {
- // return test result
- return(m_nLevel == a_oSource.m_nLevel);
- }
- CGBLevel::~CGBLevel() // detractor
- {
- Cleanup();
- }
- GB_GRADE_TYPE CGBLevel::GetThinGrade()
- {
- // get grade
- // A
- double dLengthAll = 0;
- int nSize;
- switch (m_nLevel)
- {
- case GB_LEVEL_TYPE::A_TYPE:
- for (auto pAparticle : m_GBField->listAThinParticles)
- {
- double dLength = pAparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetAGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::B_TYPE:
- dLengthAll = 0;
- for (auto pBparticle : m_GBField->listBThinParticles)
- {
- double dLength = pBparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetBGrade(dLengthAll);
- case GB_LEVEL_TYPE::C_TYPE:
- dLengthAll = 0;
- for (auto pCparticle : m_GBField->listCThinParticles)
- {
- double dLength = pCparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetCGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::D_TYPE:
- nSize = (int)m_GBField->listDThinParticles.size();
- return GetDGrade(nSize);
- break;
- case GB_LEVEL_TYPE::DSulfide_TYPE:
- nSize = (int)m_GBField->listDSulfideThinParticles.size();
- return GetDGrade(nSize);
- break;
-
- }
-
- return GB_GRADE_TYPE::INVALID;
- }
- GB_GRADE_TYPE CGBLevel::GetWideGrade()
- {
- double dLengthAll = 0;
- int nSize;
- switch (m_nLevel)
- {
- case GB_LEVEL_TYPE::A_TYPE:
- for (auto pAparticle : m_GBField->listAWideParticles)
- {
- double dLength = pAparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetAGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::B_TYPE:
- dLengthAll = 0;
- for (auto pBparticle : m_GBField->listBWideParticles)
- {
- double dLength = pBparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetBGrade(dLengthAll);
- case GB_LEVEL_TYPE::C_TYPE:
- dLengthAll = 0;
- for (auto pCparticle : m_GBField->listCWideParticles)
- {
- double dLength = pCparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetCGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::D_TYPE:
- nSize = (int)m_GBField->listDWideParticles.size();
- return GetDGrade(nSize);
- break;
- case GB_LEVEL_TYPE::DSulfide_TYPE:
- nSize = (int)m_GBField->listDSulfideWideParticles.size();
- return GetDGrade(nSize);
- break;
- }
- return GB_GRADE_TYPE::INVALID;
- }
- GB_GRADE_TYPE CGBLevel::GetSuperGrade()
- {
- double dLengthAll = 0;
- int nSize;
- switch (m_nLevel)
- {
- case GB_LEVEL_TYPE::A_TYPE:
- for (auto pAparticle : m_GBField->listASuperParticles)
- {
- double dLength = pAparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetAGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::B_TYPE:
- dLengthAll = 0;
- for (auto pBparticle : m_GBField->listBSuperParticles)
- {
- double dLength = pBparticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetBGrade(dLengthAll);
- case GB_LEVEL_TYPE::C_TYPE:
- dLengthAll = 0;
- for (auto pParticle : m_GBField->listCSuperParticles)
- {
- double dLength = pParticle->GetDMax();
- dLengthAll += dLength;
- }
- return GetCGrade(dLengthAll);
- break;
- case GB_LEVEL_TYPE::D_TYPE:
- nSize = (int)m_GBField->listDSuperParticles.size();
- return GetDGrade(nSize);
- break;
- case GB_LEVEL_TYPE::DSulfide_TYPE:
- nSize = (int)m_GBField->listDSulfideSuperParticles.size();
- return GetDGrade(nSize);
- break;
- }
- return GB_GRADE_TYPE::INVALID;
- }
- double CGBLevel::GetMaxFeretDiameter()
- {
- if (m_FeretDiameterMax == 0)
- {
- double dFeretDiameterMax = 0;
- for (auto pDSParticles : m_GBField->listDSParticles)
- {
- double dFeretDiameter = pDSParticles->GetFeretDiameter();
- if (dFeretDiameter > dFeretDiameterMax)
- {
- dFeretDiameterMax = dFeretDiameter;
- }
- }
- m_FeretDiameterMax = dFeretDiameterMax;
- }
- return m_FeretDiameterMax;
- }
- GB_GRADE_TYPE GetAGrade(double dLengthAll)
- {
- if (dLengthAll < 37)
- {
- return (GB_GRADE_TYPE::POINT_0_0);
- }
- else if (dLengthAll < 127 && dLengthAll >= 37)
- {
- return (GB_GRADE_TYPE::POINT_0_5);
- }
- else if (dLengthAll < 261 && dLengthAll >= 127)
- {
- return (GB_GRADE_TYPE::POINT_1_0);
- }
- else if (dLengthAll < 436 && dLengthAll >= 261)
- {
- return (GB_GRADE_TYPE::POINT_1_5);
- }
- else if (dLengthAll < 649 && dLengthAll >= 436)
- {
- return (GB_GRADE_TYPE::POINT_2_0);
- }
- else if (dLengthAll < 898 && dLengthAll >= 649)
- {
- return (GB_GRADE_TYPE::POINT_2_5);
- }
- else if (dLengthAll < 1181 && dLengthAll >= 898)
- {
- return (GB_GRADE_TYPE::POINT_3_0);
- }
- else if (dLengthAll < 1498 && dLengthAll >= 1181)
- {
- return (GB_GRADE_TYPE::POINT_3_5);
- }
- else if (dLengthAll < 1898 && dLengthAll >= 1489)
- {
- return (GB_GRADE_TYPE::POINT_4_0);
- }
- else if (dLengthAll < 2230 && dLengthAll >= 1898)
- {
- return (GB_GRADE_TYPE::POINT_4_5);
- }
- else if (dLengthAll >= 2230)
- {
- return (GB_GRADE_TYPE::POINT_5_0);
- }
- return GB_GRADE_TYPE::INVALID;
- }
- GB_GRADE_TYPE GetBGrade(double dLengthAll)
- {
- if (dLengthAll < 17)
- {
- return (GB_GRADE_TYPE::POINT_0_0);
- }
- else if (dLengthAll < 77 && dLengthAll >= 17)
- {
- return (GB_GRADE_TYPE::POINT_0_5);
- }
- else if (dLengthAll <= 184 && dLengthAll >= 77)
- {
- return (GB_GRADE_TYPE::POINT_1_0);
- }
- else if (dLengthAll < 343 && dLengthAll >= 184)
- {
- return (GB_GRADE_TYPE::POINT_1_5);
- }
- else if (dLengthAll < 555 && dLengthAll >= 343)
- {
- return (GB_GRADE_TYPE::POINT_2_0);
- }
- else if (dLengthAll < 822 && dLengthAll >= 555)
- {
- return (GB_GRADE_TYPE::POINT_2_5);
- }
- else if (dLengthAll < 1147 && dLengthAll >= 822)
- {
- return (GB_GRADE_TYPE::POINT_3_0);
- }
- else if (dLengthAll < 1530 && dLengthAll >= 1147)
- {
- return (GB_GRADE_TYPE::POINT_3_5);
- }
- else if (dLengthAll < 1973 && dLengthAll >= 1530)
- {
- return (GB_GRADE_TYPE::POINT_4_0);
- }
- else if (dLengthAll < 2476 && dLengthAll >= 1973)
- {
- return (GB_GRADE_TYPE::POINT_4_5);
- }
- else if (dLengthAll >= 2476)
- {
- return (GB_GRADE_TYPE::POINT_5_0);
- }
- return GB_GRADE_TYPE::INVALID;
- }
- GB_GRADE_TYPE GetCGrade(double dLengthAll)
- {
- if (dLengthAll < 18)
- {
- return (GB_GRADE_TYPE::POINT_0_0);
- }
- else if (dLengthAll < 76 && dLengthAll >= 18)
- {
- return (GB_GRADE_TYPE::POINT_0_5);
- }
- else if (dLengthAll < 176 && dLengthAll >= 76)
- {
- return (GB_GRADE_TYPE::POINT_1_0);
- }
- else if (dLengthAll < 320 && dLengthAll >= 176)
- {
- return (GB_GRADE_TYPE::POINT_1_5);
- }
- else if (dLengthAll < 510 && dLengthAll >= 320)
- {
- return (GB_GRADE_TYPE::POINT_2_0);
- }
- else if (dLengthAll < 746 && dLengthAll >= 510)
- {
- return (GB_GRADE_TYPE::POINT_2_5);
- }
- else if (dLengthAll < 1029 && dLengthAll >= 746)
- {
- return (GB_GRADE_TYPE::POINT_3_0);
- }
- else if (dLengthAll < 1359 && dLengthAll >= 1029)
- {
- return (GB_GRADE_TYPE::POINT_3_5);
- }
- else if (dLengthAll < 1737 && dLengthAll >= 1359)
- {
- return (GB_GRADE_TYPE::POINT_4_0);
- }
- else if (dLengthAll <= 2163 && dLengthAll >= 1737)
- {
- return (GB_GRADE_TYPE::POINT_4_5);
- }
- else if (dLengthAll >= 2163)
- {
- return (GB_GRADE_TYPE::POINT_5_0);
- }
- return GB_GRADE_TYPE::INVALID;
- }
- GB_GRADE_TYPE GetDGrade(int nSize)
- {
- if (nSize < 1)
- {
- return (GB_GRADE_TYPE::POINT_0_0);
- }
- else if (nSize < 4 && nSize >= 1)
- {
- return (GB_GRADE_TYPE::POINT_0_5);
- }
- else if (nSize < 9 && nSize >= 4)
- {
- return (GB_GRADE_TYPE::POINT_1_0);
- }
- else if (nSize < 16 && nSize >= 9)
- {
- return (GB_GRADE_TYPE::POINT_1_5);
- }
- else if (nSize < 25 && nSize >= 16)
- {
- return (GB_GRADE_TYPE::POINT_2_0);
- }
- else if (nSize < 36 && nSize >= 25)
- {
- return (GB_GRADE_TYPE::POINT_2_5);
- }
- else if (nSize < 49 && nSize >= 36)
- {
- return (GB_GRADE_TYPE::POINT_3_0);
- }
- else if (nSize < 64 && nSize >= 49)
- {
- return (GB_GRADE_TYPE::POINT_3_5);
- }
- else if (nSize < 81 && nSize >= 64)
- {
- return (GB_GRADE_TYPE::POINT_4_0);
- }
- else if (nSize < 100 && nSize >= 81)
- {
- return (GB_GRADE_TYPE::POINT_4_5);
- }
- else if (nSize >= 100)
- {
- return (GB_GRADE_TYPE::POINT_5_0);
- }
- return GB_GRADE_TYPE::INVALID;
- }
- CString GetDSGrade(double dFeretDiameterMax)
- {
- if (dFeretDiameterMax < 13)
- {
- return _T("0");
- }
- else if (dFeretDiameterMax < 19 && dFeretDiameterMax >= 13)
- {
- return _T("0.5");
- }
- else if (dFeretDiameterMax < 27 && dFeretDiameterMax >= 19)
- {
- return _T("1.0");
- }
- else if (dFeretDiameterMax < 38 && dFeretDiameterMax >= 27)
- {
- return _T("1.5");
- }
- else if (dFeretDiameterMax < 53 && dFeretDiameterMax >= 38)
- {
- return _T("2.0");
- }
- else if (dFeretDiameterMax < 76 && dFeretDiameterMax >= 53)
- {
- return _T("2.5");
- }
- else if (dFeretDiameterMax < 107 && dFeretDiameterMax >= 76)
- {
- return _T("3.0");
- }
- else if (dFeretDiameterMax < 151 && dFeretDiameterMax >= 107)
- {
- return _T("3.5");
- }
- else if (dFeretDiameterMax < 214 && dFeretDiameterMax >= 151)
- {
- return _T("4.0");
- }
- else if (dFeretDiameterMax < 303 && dFeretDiameterMax >= 214)
- {
- return _T("4.5");
- }
- else if (dFeretDiameterMax >= 303)
- {
- return _T("5.0");
- }
- return _T("0.0");
- }
- /*void CGBLevel::Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode)
- {
- xmls::xInt xLevel;
- xmls::Slo slo;
- slo.Register("Level", &xLevel);
- if (isStoring)
- {
- xLevel = (int)m_nLevel;
- slo.Serialize(true, classDoc, rootNode);
- }
- else
- {
- slo.Serialize(false, classDoc, rootNode);
- m_nLevel = (GB_LEVEL_TYPE)xLevel.value();
- }
- }*/
- // cleanup
- void CGBLevel::Cleanup()
- {
- }
- // initialization
- void CGBLevel::Init()
- {
- m_nLevel = GB_LEVEL_TYPE::INVALID;
- }
- // duplication
- void CGBLevel::Duplicate(const CGBLevel& a_oSource)
- {
- // initialization
- Init();
- // copy data over
- m_nLevel = a_oSource.m_nLevel;
- }
- }
|