void Rand(int iT,int iHeight,int iWidth,std::vector & fGrid,int iCenterX,int iCenterY) { static int iRand[32]; static int iCoolDown = 0; if (!iT) { int k = 0; while(k < 32) iRand[k++] = rand()%4; } int iIterator; int k = 0; if(!iCoolDown) { int iTemp = rand()%16; iRand[iTemp] = rand()%4; //iRand[k+1] = iT; if(iTemp < 4) iCoolDown = 96; } else { iRand[16 + (iCoolDown%16)-8] = rand()%4; iCoolDown--; } for (int i = 0; i < iHeight; i++) { for (int j = 0; j < iWidth; j++) { float fX = (float)(i-iCenterX)/(float)(iHeight); float fY = (float)(j-iCenterY)/(float)(iWidth); iIterator = 0; while( fX < 4 && fY < 4) { if(iRand[iIterator] == 0) { float fTemp = fX; fX = fY/2; fY = fTemp*2; } else if(iRand[iIterator] == 1) { float fTemp = fY; fY = cos(fX); fX = cos(fTemp); } else if(iRand[iIterator] == 2) { fX = fX*fX; fY = 1./fY; } else if(iRand[iIterator] == 3) { float fTemp = fY; fY = (fY-fX) * fY; fX = (fX-fTemp) * fX; } if(iIterator >= 32) break; iIterator++; } fGrid[i * iWidth + j] = 0.0625 + (float)(iIterator-32)/128.0f; } } }