ftp.nice.ch/pub/next/graphics/3d/Raytracers.N.bs.tar.gz#/raytracers/ohta/src/random.c

This is random.c in view mode; [Download] [Up]

#include <stdio.h>
#include <math.h>

double rnd()
{	return (random()&0xffff)/65536.0;
}

main(ac,av)
int ac;
char **av;
{int i,j,n;
double x,y,z,r,cr,d,l; float rr, r1, r2, g1, g2, b1, b2;
	if(ac!=3&&ac!=4)
	{	fprintf(stderr,"Usage: %s number radious [seed]\n",
			av[0]);
		exit(1);
	}
	n=atoi(av[1]);
	sscanf(av[2]," %f \0",&rr); r = rr; /* */
	/*r=atof(av[2]); /* */
	if(ac==4)
		srandom(atoi(av[3]));
	if(n<0||r<=0)
	{	fprintf(stderr,"Usage: %s number radious [seed]\n",
			av[0]);
		exit(1);
	}
	for(i=0;i<n;i++)
	{	while(1)
		{	x=rnd()*2-1;
			y=rnd()*2-1;
			z=rnd()*2-1;
			l=x*x+y*y+z*z;
			if(l<=(1-r)*(1-r))
				break;;
		}
		r1=rnd() * 0.01; r2=rnd()*0.8+0.1;
		g1=rnd() * 0.01; g2=rnd()*0.8+0.1;
		b1=rnd() * 0.01; b2=rnd()*0.8+0.1;
		printf("o 0 1\n");
		printf("\t%g %g %g %g\n",x,y,z+2,r);
		printf("\t%g %g %g\t%g %g %g\t0.7 0.7 0.7 0.01\n",
			r1,g1,b1,r2,g2,b2);
	}
	exit(0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.