Sunday, 30 April 2017
Animación de satélite (python)

Animación de un satélite en torno de un planeta

Satelite en torno de un planeta
El ejercicio  a realizar, tiene como objetivo ilustrar como se puede utilizar instancias de la clase sphere para realizar simulación simples de movimiento planetario. En este caso se  utiliza dos instancias de la clase sphere y una curve de la clase curve. Se utilizan sus propiedades para generar la simulación de movimiento en 3D de los objetos. La esfera que representa al planeta realiza una pequeña oscilación, mientras que la que representa el satélite tiene una trayectoria prácticamente circular.

#**************************************************

from visual import *
# definiendo la funcion  generadora de la animacion.
#objetivo de la animacion: Mostrar un satelite girando
#en torno de un planeta, indicando su trayectoria.
def dibuja():

    display(background=(0.2,0.3,0.4), title="SATELITE")
    lomas=label(text="www.lomasdeterciopelo.co.cr", pos=(0,-15,0))
    planeta = sphere(pos=(1,0,0), radius=4, material=materials.earth)
    satelite = sphere(pos=(20,0,0), color=color.blue, radius = 1)
    dt = 0
    asa=0.5
    asa2 =0.1
    asa3=0.99

    x1= satelite.pos.x
    y1= satelite.pos.y
    z1= satelite.pos.z
    dt1=0.01
    while dt1 <=6.26:
        rate(40)
        dt =0.01
        dt1+=0.01
        asa+=0.001
       
        x1= satelite.pos.x
        y1= satelite.pos.y
        z1= satelite.pos.z
        satelite.rotate(angle=dt, axis = (0,1,0.2), origin=(0,0,0))
        x2= satelite.pos.x
        y2= satelite.pos.y
        z2= satelite.pos.z
       
        cu= curve(pos=[(x1,y1,z1), (x2,y2,z2)], radius=0.2, color=(0.7,asa2,asa3))
        lomas.color=(0.7,asa2,asa3)
        if asa3>=0.2:
            asa3-=0.0008
        else:
            asa3=0.99
           
        if asa2 <=1.0:
                asa2+=0.001
        else:
            asa2=0.0          

        planeta.rotate(angle=0.02,axis=(0.1,1,0), origin=(0.01,0,0))


#*************** main******************************

while 1:
   
    dibuja()


#********************************************




{backbutton}