void CSigCreate::GetPhoneID() { ifstream fPos("UePosition.txt"); if(!fPos) return; string s; //先检索出所有的手机ID,以便之后存储方便。可通过UePosition文件进行检索 while( getline(fPos,s) ) { UePosition pos; if( GetUePositionPerLine(s.c_str(),&pos)) {//读取到一行手机数据 if(CheckPhoneIDExist(pos.nPhoneID)) { fPos.close(); return; } PhoneInfo info; info.nPhoneID = pos.nPhoneID; m_structInfoList.phoneInfoList.push_back(info); } } fPos.close(); }
void CDebug::TestCov() { ifstream fPos("Tmp.txt"); if(!fPos) return ; string s; //先检索出所有的手机 GetPhoneID(); vector<vector<double> > ve; while( getline(fPos,s) ) { std::vector<std::string> strList; strList = split(s,"\""); vector<double> v; //转换字符串 double db = atof(strList.at(0).c_str()); v.push_back(db); //时间转换 db = atof(strList.at(1).c_str()); v.push_back(db); //坐标转换 db= atof(strList.at(2).c_str()); v.push_back(db); db = atof(strList.at(3).c_str()); v.push_back(db); ve.push_back(v); } CCov cov; cov.SetData(&ve); int nCol,nRaw; bool b = cov.Calculate(&nCol,&nRaw); fPos.close(); }
/*++ ******************************************************************************** FUNCTION: fSize DESCRIPTION: Return the size of the file ARGUMENTS: File handle RETURNS: Size of file in 64 bits ******************************************************************************** --*/ u64 fSize( FILE *handle ) { u64 size,pos; pos = fTell( handle ); fEnd( handle ); size = fTell( handle ); fPos( pos, handle ); return size; }
bool CSigCreate::CreateSigStruct() { //先检索出所有的手机ID,以便之后存储方便。可通过UePosition文件进行检索 GetPhoneID(); GetCellID(&m_cellInfo); ifstream fPos("UePosition.txt"); if(!fPos) return false; string s; while( getline(fPos,s) ) { UePosition pos; if( GetUePositionPerLine(s.c_str(),&pos)) {//读取到一行手机数据 GetCoordnateInfo(&pos); } } fPos.close(); //基本结构建立,读取cell信息 ifstream fCell("UePhyReport.txt"); if(!fCell) return false; string str; while(getline(fCell,str)) { UePhyReport rpt; GetUePhyReportPerLine(str.c_str(),&rpt); CellInfo* pC = GetCellInfo(rpt.nPhoneID,rpt.nID); if(!pC) { return false; } RangeCellInfo info; info.dbTime = rpt.dbTime; info.rsrpInfo = rpt.dbRsrp; pC->range.push_back(info); // pC->nID cout<< str.c_str()<<endl; } fCell.close(); return true; }
//================================================================================ ATHObject* ATHObjectManager::GenerateObjectFromReference(rapidxml::xml_node<>* pRefNode) { ATHObject* pReturnObject = nullptr; rapidxml::xml_attribute<>* currObjName = pRefNode->first_attribute("Name"); float3 fPos(0.0f); rapidxml::xml_node<>* currObjPosNode = pRefNode->first_node("Position"); if (currObjPosNode) { fPos.vX = (float)atof(currObjPosNode->first_attribute("X")->value()) * GLOBAL_LOAD_SCALE; fPos.vY = (float)atof(currObjPosNode->first_attribute("Y")->value()) * GLOBAL_LOAD_SCALE; fPos.vZ = (float)atof(currObjPosNode->first_attribute("Z")->value()) * GLOBAL_LOAD_SCALE; } pReturnObject = InstanceObject(fPos, currObjName->value()); return pReturnObject; }
void CSigCreate::GetCellID(vector<CellInfo>* pCellInfo) //cellID { for(int i = 1; i <= 207; i++) { CellInfo info; info.nID = i; pCellInfo->push_back(info); } ifstream fPos("UePhyReport.txt"); if(!fPos) return; string s; //先检索出所有的手机ID,以便之后存储方便。可通过UePosition文件进行检索 while( getline(fPos,s) ) { UePhyReport pos; if( GetUePhyReportPerLine(s.c_str(),&pos)) {//读取到一行手机数据 if(CheckCellIDExits(pCellInfo,pos.nID)) { fPos.close(); return; } CellInfo info; info.nID = pos.nID; pCellInfo->push_back(info); } } fPos.close(); }
float JPetHit::getPos(int index) const { return fPos(index); }
//设置在屏幕上的坐标(像素) VOID CCreatureBoard::SetPosition(FLOAT nX, FLOAT nY) { float fAlpha = 1.0f; if(m_nDistance > CUICreatureBoardSystem::GetMe()->GetMaxDispearDistance()) { m_pWindow->hide(); return; } if(m_nDistance > CUICreatureBoardSystem::GetMe()->GetMaxDistance()) { fAlpha -= (m_nDistance - CUICreatureBoardSystem::GetMe()->GetMaxDistance() )/ ( CUICreatureBoardSystem::GetMe()->GetMaxDispearDistance() - CUICreatureBoardSystem::GetMe()->GetMaxDistance()); } CEGUI::Point fPos(nX, nY); float fOffset = 0; float fY = fPos.d_y; CEGUI::Size size; // 判断是否要显示 if( m_bShowHpLevel ) { if( m_pHPlevelWindow && m_pHPWindow ) { // 计算位置 fOffset -= m_pHPlevelWindow->getAbsoluteHeight(); fPos.d_y += fOffset; fPos.d_x -= m_pHPlevelWindow->getAbsoluteWidth() / 2.0f; m_pHPlevelWindow->setPosition(CEGUI::Absolute, fPos); // 血条 m_pHPWindow->setPosition(CEGUI::Absolute, fPos); // 设置进度 ((CEGUI::ProgressBar*)m_pHPWindow)->setProgress( m_fProgross ); //laim1648 m_pHPWindow->show(); } } // 恢复x偏移 fPos.d_x = nX; fPos.d_y = nY; // 计算名字的位置 fPos.d_y += fOffset; ( ( CEGUI::IFalagardSelfFitWindow* )( CEGUI::FalagardSelfFitWindow* )m_pNameWindow )->setCenter(fPos); fOffset -= m_pNameWindow->getAbsoluteHeight(); // 名字 if( m_pNameWindow->isVisible() && !( m_pNameWindow->getText().empty() ) ) { m_pWindow->show(); debugInfo(); } else { // 摆摊状态时,其他玩家名字不显示时,信息板还要显示 20100527 BLL if ( m_bShowStallSign == FALSE ) { m_pWindow->hide(); } else m_pWindow->show(); } // 20100504 AddCodeBegin // 级别显示在玩家名字后面 if( m_bShowHpLevel ) { CEGUI::Point fLevelPos = m_pNameWindow->getAbsolutePosition(); CEGUI::Size nameSize = m_pNameWindow->getAbsoluteSize(); fLevelPos.d_x = fLevelPos.d_x + nameSize.d_width; ( ( CEGUI::IFalagardSelfFitWindow* )( CEGUI::FalagardSelfFitWindow* )m_pLevelTextWindow )->setCenter(fLevelPos); m_pLevelTextWindow->setPosition( CEGUI::Absolute, fLevelPos ); m_pLevelIcoWindow->setPosition( CEGUI::Absolute, fLevelPos ); if( !m_bShowLevelIco ) { m_pLevelTextWindow->show(); } else { size = m_pNameWindow->getAbsoluteSize(); size.d_width = size.d_height; m_pLevelIcoWindow->setSize( CEGUI::Absolute, size ); m_pLevelIcoWindow->show(); } } // 20100504 AddCodeEnd // 国家称号 if( m_bCountryTitle && !( m_pCountryTitleWindow->getText().empty() ) ) { fPos.d_y = fY + fOffset; ((CEGUI::IFalagardSelfFitWindow*)(CEGUI::FalagardSelfFitWindow*)m_pCountryTitleWindow)->setCenter( fPos ); fOffset -= m_pCountryTitleWindow->getAbsoluteHeight(); m_pCountryTitleWindow->show(); } // 帮会称号 if( m_bGuildTitle && !( m_pGuildTitleWindow->getText().empty() ) ) { fPos.d_y = fY + fOffset; ((CEGUI::IFalagardSelfFitWindow*)(CEGUI::FalagardSelfFitWindow*)m_pGuildTitleWindow)->setCenter( fPos ); fOffset -= m_pGuildTitleWindow->getAbsoluteHeight(); m_pGuildTitleWindow->show(); } // 称号 if( m_bTitle && !(m_pTitleWindow->getText().empty()) ) { fPos.d_y = fY + fOffset; ((CEGUI::IFalagardSelfFitWindow*)(CEGUI::FalagardSelfFitWindow*)m_pTitleWindow)->setCenter(fPos); fOffset -= m_pTitleWindow->getAbsoluteHeight(); m_pTitleWindow->show(); } // 摆摊 if( m_pSaleWindow->isVisible() ) { fPos.d_y = fY + fOffset; m_pSaleWindow->setProperty( "HookPosition", CEGUI::PropertyHelper::pointToString( fPos ) ); ((CEGUI::PushButton*)m_pSaleWindow)->resizeWithText(); fOffset -= m_pSaleWindow->getAbsoluteHeight(); } // 头顶泡泡 if( m_pPaoPao->isVisible() ) { fPos.d_y = fY + fOffset; ((CEGUI::IFalagardSelfFitWindow*)(CEGUI::FalagardSelfFitWindow*)m_pPaoPao)->setCenter(fPos); fOffset -= m_pPaoPao->getAbsoluteHeight(); } // PK标志 // 20100513 ModifyCodeBegin if( m_pPKWindow->isVisible() ) { CEGUI::Size pkSize; fOffset -= m_pPKWindow->getAbsoluteHeight(); fPos.d_y = fY + fOffset; fPos.d_x = nX - m_pPKWindow->getAbsoluteWidth() / 2; //pkSize.d_width = ((CEGUI::StaticImage*)m_pPKWindow)->getImage()->getWidth(); //pkSize.d_height = ((CEGUI::StaticImage*)m_pPKWindow)->getImage()->getHeight(); pkSize = CEGUI::AnimateManager::getSingleton().getAnimate( (CEGUI::utf8*)"questsign_accept" )->getSize(); m_pPKWindow->setSize( CEGUI::Absolute, pkSize ); m_pPKWindow->setPosition( CEGUI::Absolute, fPos ); } // 20100513 ModifyCodeEnd // 国家标志 size = m_pNameWindow->getAbsoluteSize(); fPos = m_pNameWindow->getAbsolutePosition(); fPos.d_x -= size.d_height; m_pCountryFlag->setPosition(CEGUI::Absolute, fPos); size.d_width = size.d_height; m_pCountryFlag->setSize(CEGUI::Absolute, size); // 队长标志 size = m_pNameWindow->getAbsoluteSize(); fPos = m_pNameWindow->getAbsolutePosition(); // 20100504 ModifyCodeBegin 级别改为在名字后面显示后,修改队长标记位置 CEGUI::Size levelTextSize = m_pLevelTextWindow->getAbsoluteSize(); fPos.d_x += size.d_width; fPos.d_x += levelTextSize.d_width; // 20100504 ModifyCodeEnd m_pLeadFlag->setPosition(CEGUI::Absolute, fPos); size.d_width = size.d_height; m_pLeadFlag->setSize(CEGUI::Absolute, size); // 帮派权限图标标的位置 size = m_pTitleWindow->getAbsoluteSize(); fPos = m_pTitleWindow->getAbsolutePosition(); fPos.d_x -= size.d_height; m_pBangpaiFlag->setPosition( CEGUI::Absolute, fPos ); size.d_width = size.d_height; m_pBangpaiFlag->setSize( CEGUI::Absolute, size ); // 设置透明度 m_pCountryFlag->setAlpha( fAlpha ); m_pBangpaiFlag->setAlpha( fAlpha ); m_pLeadFlag->setAlpha( fAlpha ); m_pPKWindow->setAlpha( fAlpha ); m_pSaleWindow->setAlpha( fAlpha ); m_pNameWindow->setAlpha( fAlpha ); m_pTitleWindow->setAlpha(fAlpha); m_pCountryTitleWindow->setAlpha(fAlpha); m_pGuildTitleWindow->setAlpha(fAlpha); switch( m_InfoState ) { case STATE_NORMAL: break; case STATE_DIE: m_pNameWindow->setProperty( "TextColor", CEGUI::PropertyHelper::colourToString( CEGUI::colour( 0.5,0.5,0.5, fAlpha ) ) ); break; default: break; } }
bool MeshGenerator::marchingCube(const Vector3i &pos) { float afCubeValue[8]; Vector3f asEdgeVertex[12]; Vector3f asEdgeNorm[12]; // Calculate the position in the Cube Vector3f fPos(pos.x() * m_stepSize + m_min.x(), pos.y() * m_stepSize + m_min.y(), pos.z() * m_stepSize + m_min.z()); //Make a local copy of the values at the cube's corners for(int i = 0; i < 8; ++i) { afCubeValue[i] = m_cube->value(Vector3i(pos + Vector3i(a2iVertexOffset[i]))); } //Find which vertices are inside of the surface and which are outside long iFlagIndex = 0; for(int i = 0; i < 8; ++i) { if(afCubeValue[i] <= m_iso) { iFlagIndex |= 1<<i; } } //Find which edges are intersected by the surface long iEdgeFlags = aiCubeEdgeFlags[iFlagIndex]; // No intersections if the cube is entirely inside or outside of the surface if(iEdgeFlags == 0) { return false; } //Find the point of intersection of the surface with each edge //Then find the normal to the surface at those points for(int i = 0; i < 12; ++i) { //if there is an intersection on this edge if(iEdgeFlags & (1<<i)) { float fOffset = offset(afCubeValue[a2iEdgeConnection[i][0]], afCubeValue[a2iEdgeConnection[i][1]]); asEdgeVertex[i] = Vector3f( fPos.x() + (a2fVertexOffset[a2iEdgeConnection[i][0]][0] + fOffset * a2fEdgeDirection[i][0]) * m_stepSize, fPos.y() + (a2fVertexOffset[a2iEdgeConnection[i][0]][1] + fOffset * a2fEdgeDirection[i][1]) * m_stepSize, fPos.z() + (a2fVertexOffset[a2iEdgeConnection[i][0]][2] + fOffset * a2fEdgeDirection[i][2]) * m_stepSize); /// FIXME Optimize this to only calculate normals when required asEdgeNorm[i] = normal(asEdgeVertex[i]); } } // Store the triangles that were found, there can be up to five per cube for(int i = 0; i < 5; ++i) { if(a2iTriangleConnectionTable[iFlagIndex][3*i] < 0) break; int iVertex = 0; iEdgeFlags = a2iTriangleConnectionTable[iFlagIndex][3*i]; // Make sure we get the triangle winding the right way around! if (!m_reverseWinding) { for(int j = 0; j < 3; ++j) { iVertex = a2iTriangleConnectionTable[iFlagIndex][3*i+j]; m_indices.push_back(m_vertices.size()); m_normals.push_back(asEdgeNorm[iVertex]); m_vertices.push_back(asEdgeVertex[iVertex]); } } else { for(int j = 2; j >= 0; --j) { iVertex = a2iTriangleConnectionTable[iFlagIndex][3*i+j]; m_indices.push_back(m_vertices.size()); m_normals.push_back(-asEdgeNorm[iVertex]); m_vertices.push_back(asEdgeVertex[iVertex]); } } } return true; }