Friday, 24 March 2017
Animación proyectiles (python) E-mail

Animación proyectiles (python)

Proyectiles

La biblioteca visual posee una  serie de clases de objetos 3D que sirven para realiza animaciones ilustrativas aptas para  apoyo educativo de áreas como la mecánica clásica. En este ejercicio se desea ilustrar el movimiento de un proyectil que es lanzado horizontalmente. Se indican los valores principales del movimiento, como alcance  horizontal, altura y rapidez del objeto.
La ilustración emplea dos barras para indicar el alcance y altura del objeto, una caja (box) que sirve para simular el piso, una esfera para simular el objeto, otra para la cabeza del observador y dos boxes más para completar el cuerpo del observador. Además utiliza cinco instancia de la clase lab el para indicar información.
Diagrama proyectil

#*************************************
# Programa para movimiento de proyectiles.

from visual import *
display(title="Proyectiles", width = 600, height=550, pos=(100,100,50),background=(0.33,0.7,0.2))#definicion de la ventana

lomas=label(text="www.lomasdeterciopelo.co.cr", pos=(0,-35,0))
piso = box(pos=(0,-2,0),width =110, height=1, length=10, color= (220.0/255, 181.0/255,134.0/255), axis= (0,0.2,-0.2))
bola1 = sphere(pos=(-25,40,0), radius=1.5, color = color.blue)
f= frame()
cabeza = sphere(frame= f,pos=(-35,6,0), radius=0.8, color = color.blue)
cuerpo = box(frame = f,pos=(-35,4,0),width =2, height=2, length=1, color= (1,0.8,0.5), axis= (0,0.2,-0.2))
pie = box(frame = f,pos=(-35,3,0),width =1, height=2, length=1, color= color.black, axis= (0,0.2,-0.2))
w = 1
#definicion de la velocidad inicial
#proyectil lanzado horizontalmente
bola1_velocity_y=0
bola1_velocity_x= 15
dt=0.
b1x=bola1.pos.x
b1y=bola1.pos.y
pox= bola1.pos.x
poy= bola1.pos.y
alcance=label(pos=(0,-20,0), text="Alcance X")
altura= label(pos=(-40,20,5), text="Altura")
rapidez= label(pos=(35,20,5), text="Rapidez")
tiempo= label(pos=(5,43,5), text="Tiempo")

while 1:
    rate (20)
    dt+=0.005
    if bola1.pos.y >0.5:
        #Programando ecuaciones de proyectiles
        bola1.pos.y= poy-bola1_velocity_y*dt-4.9*dt**2
        bola1.pos.x = pox +bola1_velocity_x*dt
        curve(pos=[(b1x,b1y,0),(bola1.pos.x, bola1.pos.y,0)], color = color.red, radius=0.3)#Trayectoria
        curve(pos=[(b1x,-10,0),(bola1.pos.x, -10,0)], color = color.red, radius=1)#Alcance en X
        curve(pos=[(-30,b1y,0),(-30, bola1.pos.y,0)], color = (255.0/255,255.0/255,1.0/255), radius=1)#Altura
        alcance.text="Alcance " + str(round(bola1.pos.x-pox,2)) + " m"
        rapide = (bola1_velocity_x**2 + (9.8*dt)**2)**0.5
        altura.text="Altura \n" + str(round(bola1.pos.y ,2)) + " m"
        rapidez.text="Rapidez \n" + str(round(rapide ,2)) + " m/s"
        tiempo.text = " Tiempo " + str(round(dt,2)) + " s"
        b1x=bola1.pos.x
        b1y=bola1.pos.y

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

 



{backbutton}