/*///////(Copyright)//////(No modificar estas 11 primeras Lineas)///////// */ /* Autor: 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 balls.c -lm -o balls **/ /*************************************************************/ #include #include #include #define MAX_X 1000.0 #define MAX_Z 750.0 #define MAX_BALLS 10000 #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; /*****************************************/ void 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); contBall++; if ( (contBall >= MAX_BALLS) ) ){ exit(0); } else{ return; /** Siguiente bola **/ } } return; /** fallo nuevo intento **/ } /****************************************/ int r_rand(int m){ return (int) ( (double)m * rand()/(RAND_MAX+1.0)); } /****************************************/ 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); } }