Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from turtle import *
- from math import *
- def dist(velo,ang,grav): # Function to calculate distance of the shot
- dist = velo*sin(ang) # Formula to calculate distance
- dist = round(((dist / grav)*2)*dist,3)
- return dist # Returns dist variable to the main(): function.
- def hi(velo,ang,grav): # Function to calculate the maximum height of the shot
- hi = round(((velo*sin(ang))**2)/(2*grav),3) # Formula to calculate the maximum height
- return hi # Returns hi variable to the main(): function.
- def xtoy(dist,velo,ang,grav,i): # Function to calculate the sety value for a given increment.
- setx = int(dist*(i/15))
- sety = int(dist*tan(ang)-(grav*dist**2)/(2*velo**2*cos*((cos(ang)))))
- return setx,sety
- def main():
- print("Welcome to The Great Planetary Trajectory Calculator!") # Greeting
- print() # Blank line for organizational purposes.
- velo = eval(input("Please enter the velocity of the projectile. (m/s) ")) # Input velocity that the projectile will launch from.
- ang = radians(float(input("Please enter the angle your projectile will fire from (degrees) "))) # Input angle the projectile will launch from, then convert to radians.
- print() # Blank line for organizational purposes.
- ctr = 0 # Creating the counter variable and setting it to 0.
- for ctr in range(3): # For Loop that gives the current ctr variable to the proper function to get a result.
- if ctr == 0: # If Then statement to detect which gravitational constant to use
- grav = 9.81 # Earth
- print("The distance travelled on Earth, would be:",dist(velo,ang,grav),"m. With a maximum height of:",hi(velo,ang,grav),"m.")
- if ctr == 1:
- grav = 1.62 # Moon
- print("The distance travelled on the Moon, would be:",dist(velo,ang,grav),"m. With a maximum height of:",hi(velo,ang,grav),"m.")
- if ctr == 2:
- grav = 3.77 # Mars
- print("The distance travelled on Mars, would be:",dist(velo,ang,grav),"m. With a maximum height of:",hi(velo,ang,grav),"m.")
- #Easy to copy paste my format for more planets as needed.
- ctr = ctr + 1 # Adds 1 to ctr variable for the next iteration of the loop.
- degang = degrees(ang)
- #### Turtles!
- wn = Screen() # Makes a screen.
- wn.setup(800,600) # Sets it up with the proper coordinates.
- wn.title("The Great Planetary Trajectory Calculator!") # Titles the screen.
- wn.setworldcoordinates(-20,-20,780,580) # Sets the coordinates for the screen.
- line = Turtle() # Creates frame for the graph.
- line.speed(0) # Creates the vertical and horizontal edges of the graph.
- line.fd(1000)
- line.up()
- line.goto(0,0)
- line.down()
- line.left(90)
- line.fd(1000)
- line.up()
- line.goto(0,0)
- line.left(180)
- line.down()
- for i in range(40): # Horizontal hashmarks
- line.forward(10)
- line.up()
- line.left(90)
- line.forward(25)
- line.left(90)
- line.forward(10)
- line.left(180)
- line.down()
- line.up() # Realignment for the vertical hashmarks.
- line.goto(0,0)
- line.right(90)
- line.down()
- for i in range(40): # Vertical hashmarks
- line.forward(10)
- line.up()
- line.right(90)
- line.forward(25)
- line.right(90)
- line.forward(10)
- line.left(180)
- line.down()
- earth = Turtle() # Creates line for trajectory on Earth
- mars = Turtle() # Creates line for trajectory on Mars
- moon = Turtle() # Creates line for trajectory on the Moon
- earth.color('green')
- mars.color('red')
- moon.color('red')
- ctr = 0
- for ctr in range(3):
- if ctr == 0: # If Then statement to detect which gravitational constant to use
- grav = 9.81 # Earth
- for i in range(15):
- x1,y1 = xtoy(dist(velo,ang,grav),velo,ang,grav,i)
- earth.setpos(x1,y1)
- if ctr == 1:
- grav = 1.62 # Moon
- for i in range(15):
- x2,y2 = xtoy(dist(velo,ang,grav),velo,ang,grav,i)
- moon.setpos(x2,y2)
- if ctr == 2:
- grav = 3.77 # Mar
- for i in range(15):
- x3,y3 = xtoy(dist(velo,ang,grav),velo,ang,grav,i)
- mars.setpos(x3,y3)
- #Easy to copy paste my format for more planets as needed.
- ctr = ctr + 1 # Adds 1 to ctr variable for the next iteration of the loop.
- wn.exitonclick() # Closes window on click after the Turtles have finished.
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement