Explicación del ejercicio :
Mi idea ha sido desde el principio programar en el entorno de desarrollo "Processing" un programa que represente el sistema solar, con el Sol en el centro de el y los nueve planetas (Mercurio, Venus, Tierra...) que giren en torno a el.
Sabemos que el movimiento es algo relativo, pero en este caso partimos del supuesto básico de que el Sol es el centro y que no se mueve (aunque si lo haga, en torno a la Vía Láctea siendo el movimiento de los planetas en torno al Sol algo así:)
En definitiva he creado una sencilla y básica representación del Sistema Solar. Tratando de reproducir lo más fielmente que he podido el sistema, en él, tanto el tamaño de los planetas, como la distancia entre ellos y su velocidad las he representado a escala.
Pero y, ¿qué pasa si queremos que estos se muevan más rápido porque consideramos que en nuestra representación van muy lento? o incluso queremos que sean más grandes. Pues para ello he creado unas variables que nos permiten modificar ambos parámetros y que en conjunto, todos los planetas se vean involucrados.
Eso sí, no he podido lograr que el Sol tenga un tamaño a escala con los demás planetas, pues como podríamos suponer ¡¡ ES TAN GRANDE QUE NO CABE EN LA PANTALLA !!
EL CÓDIGO FUENTE DEL PROGRAMA ES EL SIGUIENTE :
void setup (){size (720,720,P3D);noStroke ();}float r;float x;float v;float VM,VV,VT,Vm,VJ,VS,VU,VN;void draw (){r = 0.5;//En este programa, los tamaños de los planetas están a escala, esta variable sirve//para que en caso de desearlo, aumenten o disminuyan los tamaños de los planetas.//Se basa en la idea de que conocido el radio de un planeta, Mercurio en este caso,//estableciendo una relación entre los radios de los planetas, podemos averiguar el//tamaño del resto de planetasx = 2440/r;//Esta variable representa un factor por el que tenemos que dividir para transformar el tamaño//de los planetasv = 0.02;//Velocidad orbital de Mercurio, la tomamos como referencia para//las demás velocidades orbitales, en función de si queremos que el programa vaya//más despacio o más deprisa, la podemos modificar.VM = 48; //Velocidad orbital de MercurioVV = 35.4; //Velocidad orbital de VenusVT = 30; //Velocidad orbital de la TierraVm = 24.3; //Velocidad orbital de MarteVJ = 13.2; //Velocidad orbital de JúpiterVS = 9.7; //Velocidad orbital de SaturnoVU = 6.8; //Velocidad orbital de UranoVN = 5.5; //Velocidad orbital de Neptunocamera (300,50,300, width/2, height/2 ,0,0,1,0);background (0);lights();//Soltranslate (width/2, height/3, 0);fill (255,210,0);sphere (90);//MercuriopushMatrix ();noStroke ();rotateY(frameCount * -PI * v);translate (100,0,0);fill (153,153,153); //El modelo de colores RGB (Red,Green,Blue) trata de emular lo más fielmente a los planetassphere(r);popMatrix ();//VenuspushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VV/VM));translate (110,0,0);fill (204,102,51);sphere (6052/x);popMatrix ();//TierrapushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VT/VM));translate (120,0,0);fill (0,0,51);sphere (6371/x);popMatrix ();//MartepushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (Vm/VM));translate (135.6,0,0);fill (204,103,0);sphere (3390/x);popMatrix ();//JúpiterpushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VJ/VM));translate (265.6,0,0);fill (204,153,102);sphere (69911/x);popMatrix ();//SaturnopushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VS/VM));translate (376,0,0);fill (204,204,153);sphere (58232/x);popMatrix ();//UranopushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VU/VM));translate (664,0,0);fill (0,204,255);sphere (25362/x);popMatrix ();//NeptunopushMatrix ();noStroke ();rotateY (frameCount * -PI * v * (VN/VM));translate (990,0,0);fill (0,20,255);sphere (24622/x);popMatrix ();}
No hay comentarios:
Publicar un comentario