#include "StdAfx.h" #include "PathScheduler_Dual_Flying_Random.h" CPathScheduler_Dual_Flying_Random::CPathScheduler_Dual_Flying_Random(void) { m_vecPathData_Random.clear(); } CPathScheduler_Dual_Flying_Random::~CPathScheduler_Dual_Flying_Random(void) { m_vecPathData_Random.clear(); } int CPathScheduler_Dual_Flying_Random::PathScheduling( const VectorPathData& vecPathData, const VectorPathData& vecStartPath ) { // random data CreatePathData_Random((int)vecPathData.size()); m_vecRangeRect.clear(); m_vecScanRangeData.clear(); m_vecPathSchedulerResult.clear(); int nGantryCount = 2; int nRangeCount = CalculateRangeRect( nGantryCount, m_PathSchedulerParam.GetModuleCount(), m_PathSchedulerParam.GetScanCount(), m_PathSchedulerParam.GetGlassSizeX(), m_PathSchedulerParam.GetGlassSizeY(), m_PathSchedulerParam.GetScanMargin(), m_PathSchedulerParam.GetOriginDir(), m_PathSchedulerParam.GetBaseModuleDir(), m_vecScanRangeData); if (nRangeCount<1) return 0; int nTotalCount = 0; SPathData sStartPath; // ¸ðµâº° ½ºÄµ ½ÃÀÛÀ§Ä¡ ÀúÀå. for (int nModuleIdx=0; nModuleIdxnLeft, pRangeData->nTop, pRangeData->nRight, pRangeData->nBottom)); if (nScanIdx==0) // first scan ÀÇ ½ÃÀÛÀ§Ä¡´Â ÇöÀç ¸ðµâÀÇ À§Ä¡ÀÌ´Ù. { sStartPath = vecStartPath[nModuleIdx]; } // ¿µ¿ªº° ½ºÄÉÁ층 ¼öÇà. CPathSchedulerResult schedulerResult(nModuleIdx, nScanIdx); int nCount = CalculatePath(nModuleIdx, nScanIdx, sStartPath, m_vecPathData_Random, *pRangeData, schedulerResult); nTotalCount += nCount; if (nCount>1) { // ´ÙÀ½ ½ºÄµÀÇ ½ÃÀÛÀ§Ä¡´Â ÀÌÀü ½ºÄµÀÇ Á¾·á À§Ä¡ÀÌ´Ù. const SSchedulerResult* pNode = schedulerResult.GetPathSchedulerResult(schedulerResult.GetPathSchedulerResultCount() - 1); if (pNode) { sStartPath.nPosX = (pRangeData->nScanEndX); sStartPath.nPosY = int(pNode->dPositionY * 1000); } m_vecPathSchedulerResult.push_back(schedulerResult); } else // ´ë»ó °áÇÔÀÌ ¾øÀ»¶§ xÃà À§Ä¡¸¸ º¯°æÇÑ´Ù. { sStartPath.nPosX = (pRangeData->nScanEndX); // } } } return int(m_vecPathSchedulerResult.size()); } void CPathScheduler_Dual_Flying_Random::CreatePathData_Random( int nCount ) { int nCreateCount = (int)(nCount * m_PathSchedulerParam.GetRandomScale() + 0.5); m_vecPathData_Random.reserve(nCreateCount); srand((unsigned)time(NULL)); SPathData pathData; for (int nIdx=0; nIdx