'Is there a way i can use np.array in the code
I wanted to know if there is a way i can covert this code into a np.array code. then add it to link. I wanted to add an angle where the ball launches from.
import numpy as np
import scipy as sp
from scipy.integrate import ode
import matplotlib.pylab as pl
import matplotlib.pyplot as plt
import math
from matplotlib import*
from matplotlib.pyplot import *
from __future__ import division
import math
def projectile_xy(initPos,g,initVel):
data_xy = []
initTime = 0.0
while True:
now calculate the height y
y = initPos + (initTime * initVel * math.sin(theta)) - (g * initTime * initTime)/2
projectile has hit ground level
if y < 0:
break
calculate the distance x
x = initVel * math.cos(theta) * initTime
append the (x, y) tuple to the list
data_xy.append((x, y))
use the time in increments of 0.1 seconds
initTime += 0.1
return data_xy
g = 9.8
#h = float(raw_input("Enter the height "))
initPos = float(raw_input("Enter the height "))
der = float(raw_input("Enter the angle "))
#v = float(raw_input("Enter velocity "))
initVel = float(raw_input("Enter velocity "))
theta = math.radians(der) # radians
data_der = projectile_xy(initPos,g,initVel)
find maximum height ...
point_height_max = max(data_der, key = lambda q: q[1])
xm, ym = point_height_max
x_max = max(data_der)[0]
print('''
Projectile Motion ...
Using a firing angle of {} degrees
and a muzzle velocity of {} meters/second
the maximum height is {:0.1f} meters
at a distance of {:0.1f} meters'''.format(der, initVel, ym, xm))
print "maximum distance" ,(x_max)
Enter the height 1 Enter the angle 45 Enter velocity 30
Projectile Motion ...
Using a firing angle of 45.0 degrees
and a muzzle velocity of 30.0 meters/second
the maximum height is 24.0 meters
at a distance of 46.7 meters
maximum distance 91.2167747731
Solution 1:[1]
You can follow this approach:
import numpy as np
linear_vel = 20
ang = np.pi/3
y=10
x=12
g=9.8
y_vel = linear_vel*np.cos(ang)
x_vel = linear_vel*np.sin(ang)
t = (y_vel+np.sqrt(y_vel**2+2*g*y))/g #time when projectile hits ground
n= 20 #number of instances of time you want
time_values = np.linspace(0,int(t),n)
axes = np.zeros((2,n))
for i in range(0,n):
axes[0,i]=x_vel*time_values[i]
axes[1,i]=y_vel*time_values[i]-0.5*g*time_values[i]**2
#print time_values
#print axes
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | HelloWorld.c |
