double RandomBin :: rand(Stream_type Stream) { MTRand *streamPtr = GetStream(Stream); if (streamPtr != NULL) { return streamPtr->randDblExc(); } return 0.0; }
// Timer redraw void newParticle(int value) { particle p; p.position.x = startPosition.x; p.position.y = startPosition.y; p.position.z = startPosition.z; MTRand rand; p.randDisplacement.x = rand.randDblExc(randDisplacementMax.x - randDisplacementMin.x) + randDisplacementMin.x; p.randDisplacement.y = rand.randDblExc(randDisplacementMax.y - randDisplacementMin.y) + randDisplacementMin.y; p.randDisplacement.z = rand.randDblExc(randDisplacementMax.z - randDisplacementMin.z) + randDisplacementMin.z; if (randomColor) { p.color[0] = rand.randDblExc(); p.color[1] = rand.randDblExc(); p.color[2] = rand.randDblExc(); p.color[3] = 1.0; } p.age = 0; parts.push_back(p); glutPostRedisplay(); glutTimerFunc(redrawTime, newParticle, 1); }