示例#1
0
文件: ex26.cpp 项目: jchan1e/graphics
/*
 *  Initialize Nbody problem
 */
void InitLoc()
{
   int k;
   Color color[3];
   color[0] = Color(1.0,1.0,1.0);
   color[1] = Color(1.0,0.9,0.5);
   color[2] = Color(0.5,0.9,1.0);
   //  Allocate room for twice as many bodies to facilitate ping-pong
   pos[0] = (float3*)malloc(N*sizeof(float3));
   if (!pos[0]) Fatal("Error allocating memory for %d stars\n",N);
   pos[1] = (float3*)malloc(N*sizeof(float3));
   if (!pos[1]) Fatal("Error allocating memory for %d stars\n",N);
   vel = (float3*)malloc(N*sizeof(float3));
   if (!vel) Fatal("Error allocating memory for %d stars\n",N);
   M = (float*)malloc(N*sizeof(float));
   if (!M) Fatal("Error allocating memory for %d stars\n",N);
   col = (Color*)malloc(N*sizeof(Color));
   if (!col) Fatal("Error allocating memory for %d stars\n",N);
   //  Assign random locations
   for (k=0;k<N;k++)
   {
      pos[0][k] = rand3(dim/2);
      vel[k] = rand3(spd); 
      col[k] = color[k%3];
      M[k]   = rand1(mass);
   }
   //  Initialize src
   src = 0;
}
示例#2
0
double RandomNum::rangau(double avg, double stddev, int * iseed) {
	double rangau, fac, rsq, v1, v2, gasdev;
	static int iset;
	static double gset;
	if(*iseed<0){
		iset=0;
	}
	if(iset==0) {
		rsq=10;
		while((rsq>1)||rsq==0){
			v1=2*rand3(iseed)-1;
			v2=2*rand3(iseed)-1;
			rsq=v1*v1+v2*v2;
		}
		fac=sqrt(-2*log(rsq)/rsq);
		gset=v1*fac;
		gasdev=v2*fac;
		iset=1;
	} else {
		gasdev=gset;
		iset=0;
	}
	rangau = avg + stddev*gasdev;
	return rangau;
}