19 de mayo de 2016

50. Programas con PYGAME o MATPLOTLIB: PR13, PR13BIS, PR14, PR15

PR13: elipse con matplotlib

Desarrolla un programa que haga lo siguiente:
  1. Dibujar una elipse punto a punto, desarrollando la ecuación; la elipse deberá representar el movimiento de un planeta en torno a una estrella (ejemplo, Tierra-Sol) sabiendo su afelio y su perihelio.
  2. El programa deberá solicitar al usuario los datos de afelio y perihelio.
  3. Se deberá presentar en pantalla los datos de ejes mayor, menor y excentricidad.
  4. Intentar la animación del movimiento del planeta en torno a la estrella.
= = =
Ecuación de la elipse
Es el lugar geométrico de los puntos de un plano tal que la distancia a dos focos es constante.
elipse
PF+PF=2a
Es fácil también comprobar que AF=BF
luego se cumple que: FA+FA=FA+BF=2a , siendo OA=a , el semieje mayor y cumpliéndose que la distancia focal OF=c=a2b2 , siendo b el semieje menor.
Excentricidad
La excentricidad es la relación entre el semieje focal, y el semieje mayor. e=ca=a2b2a=1(ba )2
Desarrollo y fórmula
  1. (xc)2+y2+(x+c)2+y2=2a
  2. Elevando al cuadrado... x2+c22cx+y2+x2+c2+2cx+y2+2(xc)2+y2(x+c)2+y2=4a2
  3. Y simplificando... 2(x2+c2+y2)+2(xc)2+y2(x+c)2+y2=4a2
  4. Desarrollo los radicandos y paso al otro miembro: 2(x2+c2+y2)=4a22x2+c2+y2+2cxx2+c2+y22cx
  5. Hago el cambio A=(x2+c2+y2) y B=2cx , quedando simplificada a 2A=4a22ABA+B
  6. 2a2A= ABA+B
  7. Y elevo al cuadrado ambos miembros: 4a4+A24Aa²=(AB)(A+B)=A2B2 simplificando 4a44Aa²=B2
  8. Sustituyo B por 2cx , y c=a2b2 entonces, 4a44Aa²=4c2x2=4(a2b2)x2
  9. Sustituyo A por lo que vale: 4a44(x2+y2+c2)a2=4(a2b2)x2
  10. Simplifico: 4a44a2y24a2c2=4b2x2
  11. Vuelvo a sustituir c por su valor: 4a44a2y24a2(a2b2)=4b2x2
  12. Y vuelvo a simplificar: 4a2y2+4a2b2=4b2x2
  13. Reordeno: 4a2b2=  4b2x2+4a2y2
  14. Y por fin, divido entre 4a2b2

x2a2+y2b2=1

PR13BIS: Sistema solar, con matplotlib

Si ya sabes dibujar la trayectoria de un planeta en torno al Sol ¡Enhorabuena!. Es hora de dibujar el sistema solar.
  1. Elige un adecuado tamaño de ventana, en millones de kilómetros o en U.A, donde "quepa" el último planeta que vayas a representar.
  2. Obtén de un fichero CSV los afelios y perihelios de los planetas.
  3. El programa deberá calcular una trayectoria para cada uno de ellos.
  4. Deberán animarse en pantalla.

PR14: Juego tiro parabólico (PyGame)

Desarrolla un programa que haga lo siguiente:
  1. Dibujar un eje de coordenadas X e Y. En un cuadrado que represente 10 km x 10 km (NOTA: esto dependerá del alcance y altura máxima alcanzadas para cada ángulo)
  2. El (0,0) de los ejes, debe estar en la esquina inferior izquierda.
  3. Un rectángulo alargado, simulando un cañón (o el dibujo de un cañón), debe poder girarse en un ángulo desde 5 a 85 grados Pivotará en torno al punto (0,0). Bien moviéndolo con el ratón o con las teclas.
  4. Un objeto, un cuadrado por ejemplo, deberá dibujarse en la mitad superior de la pantalla, de forma aleatoria. Puede ser una imagen cargada (por ejemplo, en forma de diana)
  5. En la punta del cañón hay una bala, por ejemplo, un círculo (o una bala de cañón - imagen png -). Al pulsar el botón del ratón, o la tecla espacio u otra definida, la bala se dispara. La velocidad de la bala será siempre fija, de 800 m/s. Hay que calcular la trayectoria parabólica, que la bala la recorra y comprobar si colisiona con el objeto que se haya dibujado.
  6. Ampliación: escribir los parámetros  de la trayectoria (altura máxima, alcance...), conseguir que el objeto objetivo se mueva, al colisionar que aparezca una explosión, que cuente el número de aciertos...

PR15: Juego de temática libre

Desarrolla un juego de temática libre. Algunas ideas:
  1. Juego de dardos. dibujar una diana, y el jugador, al pulsar una tecla lanzará un dardo. La puntuación puede ser por reconocimiento del color de la diana. Dos indicadores moviéndose rápidamente en los ejes X e Y, al cruzarse, identifican el punto donde caerá el dardo en la diana. Reconocimiento de puntos (por color en la diana y/o por zona o ángulo).
  2. En la superficie de la luna, cae primero una lluvia de meteoritos, sembrando el suelo de ellos. Tengo ahora que alunizar una nave con los cursores. La nave cae por efecto de la gravedad lunar, pero, además , si no se tocan los cursores de izquierda a derecha para rectificar la trayectoria, el efecto de sus toberas hace que se mueva aleatoriamente hacia un lado.  Hay que alunizar SIN TOCAR las piedras. El cursor arriba encenderá los motores y hará subir algo la nave.
= = =

 Enlaces

  1. Carpeta con programas y ficheros 

No hay comentarios:

Publicar un comentario