Everything else is the same as in I21 except for one line (in red):
for ( r = 0; r < img.nrows; r++ )
for ( c = 0; c < img.ncols; c++ )
{
dist = sqrt( (double)((r-rc)*(r-rc)+(c-cc)*(c-cc)) );
gray = rand() % (128 + (int)(127*cos( 2*M_PI*nripples*dist/halfDiag ) ) );
setPixel( img, r, c, gray );
}