www.pudn.com > routeplan_mainmenu.rar > WayPoint.cpp


#include "WayPoint.h" 
#include  
 
CWayPoint::CWayPoint() 
{ 
 
} 
 
void CWayPoint::ClearNode() 
{ 
	std::vector::iterator it=pNodeVector.begin(); 
	std::vector::iterator itEnd=pNodeVector.end(); 
	for(;it!=itEnd;++it) 
	{ 
		delete((SWPNode*)(*it)); 
		*it=NULL; 
	} 
	pNodeVector.clear(); 
} 
 
bool CWayPoint::ReadWayPointFile(char *fileName) 
{ 
	int i=0; 
	int NodeCount=0; 
	FILE *fp=NULL; 
	fp=fopen(fileName,"r"); 
	if(fp==NULL) 
		return false; 
	ClearNode(); 
	fscanf(fp,"关键点数量=%d\n",&NodeCount); 
	for(i=0;ix=x; 
	pTempNode->y=y; 
	pTempNode->ID=ID; 
	pTempNode->NeighborCount=0; 
	pNodeVector.push_back(pTempNode); 
	return pNodeVector.size()-1; 
} 
 
int CWayPoint::AddNeighbor(int ParentIndex,int ChildID,float dist) 
{ 
	SWPNode *pTempNode=pNodeVector[ParentIndex]; 
	//如果已经添加过这个项,就不再添加 
	for(int i=0;iNeighborCount;i++) 
	{ 
		if(pTempNode->Neighbor[i]==ChildID) 
			return -1; 
	} 
	//添加一个邻居 
	if(pTempNode->NeighborCount<10) 
	{ 
		pTempNode->Neighbor[pTempNode->NeighborCount]=ChildID; 
		pTempNode->NeighborDistance[pTempNode->NeighborCount]=dist; 
		pTempNode->NeighborCount++; 
		return pTempNode->NeighborCount-1; 
	} 
	else 
	{ 
		return -1; 
	} 
} 
 
int CWayPoint::GetNodeCount() 
{ 
	return pNodeVector.size(); 
} 
 
SWPNode *CWayPoint::GetWPNode(int NodeIndex) 
{ 
	return pNodeVector[NodeIndex]; 
} 
 
int CWayPoint::GetIndexFromID(int NodeID) 
{ 
	for(int i=0;iID==NodeID) 
			return i; 
	} 
	return -1; 
} 
 
CWayPoint::~CWayPoint() 
{ 
 
}