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();
}
Example #3
0
/*++
 ********************************************************************************
 
 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();

}
Example #7
0
float JPetHit::getPos(int index) const
{
  return fPos(index);
}
Example #8
0
//设置在屏幕上的坐标(像素)
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;
	}
}
Example #9
0
  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;
  }