//Fabricate some test faces (random subset of points) void makeFaces(int *facesA,int *facesB) { for (int f=0;f<nFaces;f++) { int *fa=&facesA[f*nPer]; int *fb=&facesB[f*nPer]; bool doSkip=true; for (int i=0;i<nPer;i++) { int na=randNo(aPoints); bool repeat=true; //Did we hit a repeated point? do { repeat=false; for (int j=0;j<i;j++) if (na==fa[j]) { //It's a repetition-- try again na=randNo(aPoints); repeat=true; break; } } while (repeat); if (doSkip && randVal(1.0)<0.1) { fa[i]=fb[i]=-1; //Skip this node doSkip=false; } else { fa[i]=na; fb[i]=na+a2bPoints; } } } }
//----------------------------------------------------------------------------- void CChatterboxCtrl::switchTask() { unsigned int taskId = 0; int num; int r; if (mCurrentTaskPtr == NULL) { r = (int)round(randNo(0, mTaskVector.size()-1) ); mCurrentTaskPtr = mTaskVector[r]; } else { mRedisClient->decrement(mCurrentTaskPtr->getName()+".numRobots", num); for (unsigned int i = 0; i < mTaskVector.size(); i++) { if (mCurrentTaskPtr == mTaskVector[i]) taskId = i; } taskId ++; if (taskId >= mTaskVector.size() ) taskId = 0; mCurrentTaskPtr = mTaskVector[taskId]; } assert(mCurrentTaskPtr); mRedisClient->increment(mCurrentTaskPtr->getName()+".numRobots", num); }