Just a very basic example of projectile motion in Visual Python. The cannon fires when the mouse is clicked in the window.
from visual import *
# Constants
g = 9.80 # (m/s^2)
v_0x = 5 # Initial speed in x-direction
v_0y = 50 # Initial speed in y-direction
# Set the display
scene = display(title='Cannonball',
x=0, y=0, width=700, height=700,
center=(0, 30, 0))
# Draw the cannon
outer = shapes.circle(pos=(0, 0), radius=1.2)
inner = shapes.circle(pos=(0, 0), radius=1)
location = [(0, 0, 0), (0.5, 5, 0)]
cannon = extrusion(pos=location, shape=outer-inner, color=color.green)
def position(t):
"""
Move the cannonball according to the equations of projectile motion.
"""
x = v_0x*t
y = v_0y * t - 0.5 * g * t ** 2
ball.pos = (x, y, 0)
# Shoot cannon when mouse is clicked and increment time
while True:
rate(1000)
if scene.mouse.clicked:
m = scene.mouse.getclick()
ball = sphere(pos=(0, 0, 0), radius=1, color=color.yellow, make_trail=True)
i = 0
flag = True
while flag:
rate(1000)
position(i)
i += 0.01
if ball.pos[1] < 0: # Stop before ball goes through the floor
flag = False
