www.pudn.com > routeplan_mainmenu.rar > WayPoint.cpp
#include "WayPoint.h" #includeCWayPoint::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;i x=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;i NeighborCount;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;i ID==NodeID) return i; } return -1; } CWayPoint::~CWayPoint() { }