/*--------------------------------------------------------------------------*/
/*   Copyright: Antonio Castro Snurmacher (E-mail  )        */
/*                                                                          */
/*  Este fuente puede ser utilizado, distribuido, y modificado libremente   */
/*  pero siempre se deberá respetar la propiedad intelectual de su autor.   */
/*  El autor renuncia a todo tipo de beneficio económico y no se hace       */
/*  responsable de los posibles perjuicios derivados del uso del mismo.     */
/*  Toda modificación queda sujeta a las mismas condiciones de uso que el   */
/*  original. En caso de traducción deberá conservarse el texto original    */
/*  de esta cabecera y añadirse la traducción a continuación de ella.       */
/*--------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------*/
/*     burbujas.c  (1-Mayo-1998)                                            */
/*--------------------------------------------------------------------------*/
/*  Esta versión esta dedicada a su inclusión en la revista LinuxFocus      */
/*--------------------------------------------------------------------------*/


/*************************************************************/
/**    Compilar mediante cc burbujas.c -lm -o burbujas      **/
/*************************************************************/
#include 
#include 
#include 

#define MAX_X       1000.0
#define MAX_Z        750.0
#define MAX_BALLS   2000
#define MIN_RAD     3.0
#define MAX_RAD     55.0

double PosX[MAX_BALLS];
double PosZ[MAX_BALLS];
double Rad[MAX_BALLS];
int contBall=0;
int contIter=0;
int i;

/*****************************************/
int intento(double x, double z, int cont){
   double distX2;
   double distZ2;
   double rad, cur_rad;

   contIter++;
   rad=MAX_RAD;
   for (i=0; i MAX_RAD)
         rad = MAX_RAD;
   if (rad >= MIN_RAD ){
       Rad[contBall]=rad;
       PosX[contBall]=x;
       PosZ[contBall]=z;
       printf("sphere { <%4.0f, 0, %4.0f> %3.7f texture { textureBall } } //(%d/%d)\n", x, z, rad, contBall,contIter);
       fflush(stdout);
       contBall++;
       if ( contBall >= MAX_BALLS ){
              exit(0);
       }else{
              return(0);   /** Siguiente bola **/
       }
   }
   return (0); /** fallo nuevo intento **/
}

/****************************************/
int r_rand(int m){
   return (int) ( (double)m * rand()/(RAND_MAX+1.0));
}

/****************************************/
int main (){
  int X, Z;

  for(;;){
        X=r_rand(MAX_X);
        Z=r_rand(MAX_Z);
	X -= MAX_X/2;
	Z -= MAX_Z/2;
        intento(X, Z, contBall);
   }
}