+ starfield[i].e = color_starfield_parms.density * pow(rnd(), -color_starfield_parms.power);
+ }
+ fprintf(stderr, "Gravitating starfield...\n");
+ for(k = 0; k < color_starfield_parms.g; ++k)
+ {
+ i = rand() % color_starfield_parms.n;
+ j = rand() % color_starfield_parms.n;
+ f = pow(rnd(), color_starfield_parms.gpower);
+ f = f * color_starfield_parms.gfactor;
+ d = pow(starfield[j].x - starfield[i].x, 2)
+ + pow(starfield[j].y - starfield[i].y, 2)
+ + pow(starfield[j].z - starfield[i].z, 2);
+ f *= pow(1 / (1 + d), color_starfield_parms.gdpower);
+ starfield[i].x += f * (starfield[j].x - starfield[i].x);
+ starfield[i].y += f * (starfield[j].y - starfield[i].y);
+ starfield[i].z += f * (starfield[j].z - starfield[i].z);
+ double r = starfield[i].x * starfield[i].x + starfield[i].y * starfield[i].y + starfield[i].z * starfield[i].z;
+ r = sqrt(r);
+ starfield[i].x /= r;
+ starfield[i].y /= r;
+ starfield[i].z /= r;