This is an old revision of the document!
Bungee Jump
Activity Information
Learning Goals
- Students will use their understanding of energy and free fall to manipulate difference scenarios related to bungee jumping
Prior Knowledge Required
- Conservation of Energy
- Hooke's Law
- $F=-kx$
- Kinematics
Code Manipulation
- Interpret minimally working code
- Add to preexisting code
- Create new code to model scenario
—-
Activity
Handout
Bungee Jumping Mr. Spencer's physics class wants to go bungee jumping. The closet spot that Western will pay for them to go is the Parma Adventure Park. Below is some information from their website:
Looking for the best bungee jumping in Spring Arbor? The Parma Adventure Park has an exciting option for your favorite adrenaline junkee. Get your maximum rush at our relatively reliable Freefall Bungee Jump Tower. Prepare yourself for that impending, gut-wrenching feeling as you climb to the top, and then fall through our trap door for an exhilarating free fall.
Our tower, harnesses, and gear are specially engineered with a safety record of 98%! Our staff will assist you in making his the experience of a lifetime, whether you need some calming reassurance or the big “1-2-3-Go!” Feel the thrill as you hurtle towards the ground below, only to stop right before you reach the ground*
*Parma Adventure Park is not responsible for accidents resulting from patrons giving incorrect information
The tower is 25 meters high. Before you climb the steps to the top, everyone needs the right bungee cord for them. The bungee cords are all the same length, but some stretch more easily than others. Develop a method for determining which cord to assign to each member of your group using the following minimally working program.
Challenge activity: The highest numbered bungee cord is not enough for your chaperone. The staff wants to attach two different bungee cords to his harness, one on each side. Modify your computer model to include a second bungee cord and use it to develop a method for determine which two bungee cords the staff needs to use.
Code
GlowScript 2.7 VPython # Set up display window scene.width = 500 scene.height = 400 scene.background=color.white scene.center = vec(0, 20, 0) # Intial information: Enter your assigned height #h=int(prompt("What is your assinged height?")) #height = vec(0, h ,0) height = vec(0, 25, 0) pivot = height + vec(0,10,0) # Create a ceiling, a person, a floor, the rocks and a spring. ceiling=box(size=vec(10,2,10), color=color.magenta) ceiling.pos = pivot + vec(0, ceiling.size.y/2,0) person=sphere(radius=2, velocity = vec(0,0,0), color=color.yellow) person.pos = height + vec(0,person.radius,0) floor=box(size=vec(10,1,10), color=color.magenta) floor.pos=vec(0,person.pos.y-person.radius-(floor.size.y/2),0) rocks=box(pos=vec(0,-1,0), size=vec(10,2,10), color=color.gray(.5)) Spring=helix(pos=pivot, axis=person.pos-pivot, coils=10, radius=2) lengthSpring = Spring.axis #initial length of the spring (fixed) # Define parameters mPerson = 70 g = vec(0,-9.81,0) t=0 tf = 20 dt = 0.01 #ENERGY #How do energy concepts help us know which bungee cord to use? #Define the spring constant ####################EXTRA: Create a force vector######################## # FnetArrow = arrow(pos=person.pos, axis=vec(0, 0, 0), color=color.red)# ######################################################################## ############EXTRA: Create an energy graph##################### # energyGraph = graph(xtitle='time (s)', ytitle='energy (J)')# # TotalGraph= gcurve(color=color.black, label='Total Energy')# ############################################################## # Set up a disappearing floor for the trapdoor scene.pause('Click to remove floor') floor.visible = False # Dropping the person once the floor is gone while True: rate(100) #FORCES #Define the forces acting on the person (Remember Hooke's Law) #Define the net force # MOVEMENT # Update the person's velocity # Update the person's position Spring.axis = person.pos-pivot # Update the length of the spring # Change the person's color to red if they hit the rocks if person.pos.y< (rocks.pos.y+.99+person.radius): person.color=vec(1,0,0) # Update the clock t = t + dt #####EXTRA: FORCE VECTORS###### # FnetArrow.pos = vec(0,0,0) # # FnetArrow.axis = vec(0,0,0) # ############################### ##EXTRA: ENERGY GRAPHS### # TotalGraph.plot(t,TE) # ######################### #Have the computer print the height of the person at the end of the program (won't happen until the while loop ends) #print("h =", (person.pos.y-person.radius)) #Compared to the floor's surface #print("floor = ", floor.pos+1)
Answer Key
Handout
Code
GlowScript 2.7 VPython # Set up display window scene.width = 500 scene.height = 400 scene.background=color.white scene.center = vec(0, 20, 0) # Intial information: Enter your assigned height #h=int(prompt("What is your assinged height?")) #height = vec(0, h ,0) height = vec(0, 25, 0) pivot = height + vec(0,10,0) # Create a ceiling, a person, a floor, the rocks and a spring. ceiling=box(size=vec(10,2,10), color=color.magenta) ceiling.pos = pivot + vec(0, ceiling.size.y/2,0) person=sphere(radius=2, velocity = vec(0,0,0), color=color.yellow) person.pos = height + vec(0,person.radius,0) floor=box(size=vec(10,1,10), color=color.magenta) floor.pos=vec(0,person.pos.y-person.radius-(floor.size.y/2),0) rocks=box(pos=vec(0,-1,0), size=vec(10,2,10), color=color.gray(.5)) Spring=helix(pos=pivot, axis=person.pos-pivot, coils=10, radius=person.radius) lengthSpring = Spring.axis #initial length of the spring (fixed) # Define parameters mPerson = 70 g = vec(0,-9.81,0) t=0 tf = 20 dt = 0.01 #Use energy to determine the spring constant Egrav = abs(mPerson*g.y*height.y) kSpring = abs(2*Egrav/(height.y**2)) #kSpring = 47 #Create the force vectors FgravArrow = arrow(pos=person.pos, axis=vec(-2,0,0), color=color.red) FspringArrow = arrow(pos=person.pos+vec(2, 0, 0), color=color.blue) FnetArrow = arrow(pos=person.pos, axis=vec(0, 0, 0), color=color.black) #Energy graph showing kinetic energy (max at eq) and spring potential (0 at eq) energyGraph = graph(xtitle='time (s)', ytitle='energy (J)') KineticGraph = gcurve(color=color.green, label='Kinetic') SpringGraph = gcurve(color=color.blue, label='Spring Potential') GravGraph = gcurve(color=color.red, label='Grav. Potential') TotalGraph= gcurve(color=color.black, label='Total Energy') # Set up a disappearing floor for the trapdoor scene.pause('Click to remove floor') floor.visible = False # Dropping the person once the floor is gone while t<tf: #while person.velocity.y <=0: rate(200) #Define the forces so they update as time goes on Fgrav = mPerson * g Fspring = -kSpring * (Spring.axis-lengthSpring) #Fspring = -k * delta x Fnet = Fspring + Fgrav # Movement - update the velocity of the person, the position of the person and the length of the spring person.velocity = person.velocity + (Fnet/mPerson)*dt person.pos = person.pos + person.velocity*dt Spring.axis = person.pos-pivot # Change the person's color to red if they hit the rocks if person.pos.y< (rocks.pos.y+.99+person.radius): person.color=vec(1,0,0) # Update the clock t = t + dt #Show the force vectors FgravArrow.pos = person.pos+vec(-2,0,0) FgravArrow.axis = Fgrav/(1e2) FspringArrow.pos = person.pos+vec(2, 0, 0) FspringArrow.axis = Fspring/(1e2) FnetArrow.pos = person.pos FnetArrow.axis = Fnet/(1e2) #Calculate the energies in each moment KE=0.5*mPerson*mag(person.velocity)**2 SPE=0.5*kSpring*mag(Spring.axis-lengthSpring)**2 GPE=abs(mPerson*g.y*(person.pos.y-person.radius)) TE=KE+SPE+GPE #Graph the energies KineticGraph.plot(t, KE) SpringGraph.plot(t,SPE) GravGraph.plot(t,GPE) TotalGraph.plot(t,TE) #Have the computer print the height of the person at the end of the program (won't happen until the while loop ends) #print("h =", (person.pos.y-person.radius)) #Compared to the rocks's surface #print("rocks = ", rocks.pos.y+1)