Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
repository:inner_tube_river_crossing [2020/02/22 17:33]
porcaro1 [Answer Key]
repository:inner_tube_river_crossing [2021/02/18 19:54] (current)
porcaro1 [Answer Key]
Line 10: Line 10:
   * Vector addition   * Vector addition
   * Vector decomposition   * Vector decomposition
-     ​* ​$\sinand $\cosfunctions +     * sin and cos functions 
-     ​* ​$\arctanfunction+     * arctan function
 ===Code Manipulation=== ===Code Manipulation===
   * Interpret code   * Interpret code
Line 19: Line 19:
 ====Activity==== ====Activity====
 ===Handout=== ===Handout===
-==Inner Tube River Crossing== +**Inner Tube River Crossing** 
-**Part 1** \\+{{ :​repository:​inner_tube.png?​nolink&​600|}} 
 +==Part 1==
 It is a hot summer day, and you are meeting your friends for a picnic lunch down by the river. When you get to the river, you discover you are on the wrong side, 20 meters from the picnic site. As an experienced inner tuber, you know that you can paddle your tube at a speed of 2.0 m/s. Additionally,​ you know the river moves westward at a speed of 1.5 m/s. Your friends have already started the grill and your meal will be ready in 15 seconds. ​ It is a hot summer day, and you are meeting your friends for a picnic lunch down by the river. When you get to the river, you discover you are on the wrong side, 20 meters from the picnic site. As an experienced inner tuber, you know that you can paddle your tube at a speed of 2.0 m/s. Additionally,​ you know the river moves westward at a speed of 1.5 m/s. Your friends have already started the grill and your meal will be ready in 15 seconds. ​
  
-You have an [[https://​www.glowscript.org/#/​user/​jbennett/folder/Private/program/relativemotionstudentversion ​| app]] that lets you enter your velocity and the velocity of the river to determine your net velocity. For the following questions, calculate the answer and check your results with the code.+You have an [[https://​www.glowscript.org/#/​user/​porcaro1/folder/RepositoryPrograms/program/InnerTubeRiverCrossing-Incomplete ​| app]] that lets you enter your velocity and the velocity of the river to determine your net velocity. For the following questions, calculate the answer and check your results with the code.
   - If you were to get in the river and begin paddling directly across, what velocity (magnitude and direction) do your friends see you moving relative to the shore? ​   - If you were to get in the river and begin paddling directly across, what velocity (magnitude and direction) do your friends see you moving relative to the shore? ​
   - How long does it take to cross the river? If the river had a faster current, how would this affect the time it takes you to get across? ​   - How long does it take to cross the river? If the river had a faster current, how would this affect the time it takes you to get across? ​
  
-**Part 2** \\+==Part 2==
 You would like to paddle across the river to get to your friends at the picnic site, but you don't want to hike back upriver once you paddle across. You would like to paddle across the river to get to your friends at the picnic site, but you don't want to hike back upriver once you paddle across.
   - At what angle with the shore must you paddle in order to get directly across the river to the picnic area?   - At what angle with the shore must you paddle in order to get directly across the river to the picnic area?
   - How long will this take? Why is this different from your answer in Part 1?   - How long will this take? Why is this different from your answer in Part 1?
  
-**Part 3** \\+==Part 3==
 After lunch, you decide to cool off by floating in the river. You want to chat with your friends on the shore while you float, so you need to paddle in such a way that you remain stationary. After lunch, you decide to cool off by floating in the river. You want to chat with your friends on the shore while you float, so you need to paddle in such a way that you remain stationary.
   - How might you modify your code so that you model the scenario of floating in the center of the river, in front of the picnic site?   - How might you modify your code so that you model the scenario of floating in the center of the river, in front of the picnic site?
  
-**Part 4** \\+==Part 4==
 Coding questions: Coding questions:
   - What is a while loop, and what quantities/​values must go inside a while loop?   - What is a while loop, and what quantities/​values must go inside a while loop?
Line 45: Line 46:
  
 ===Code=== ===Code===
-[[https://​www.glowscript.org/#/​user/​jbennett/folder/Private/program/relativemotionstudentversion ​| Link]]+[[https://​www.glowscript.org/#/​user/​porcaro1/folder/RepositoryPrograms/program/InnerTubeRiverCrossing-Incomplete ​| Link]]
 <code Python [enable_line_numbers="​true"​]>​ <code Python [enable_line_numbers="​true"​]>​
 GlowScript 2.7 VPython GlowScript 2.7 VPython
Line 117: Line 118:
 ====Answer Key=== ====Answer Key===
 ===Handout=== ===Handout===
-**Part 1**+==Part 1== 
 +{{ :​repository:​inner_tube_answer_1.png?​nolink&​600|}}
   - You can determine your velocity with respect to the shore through vector addition:   - You can determine your velocity with respect to the shore through vector addition:
     - $\vec{v}_{tube/​shore}=\vec{v}_{river/​shore}+\vec{v}_{tube/​river}$     - $\vec{v}_{tube/​shore}=\vec{v}_{river/​shore}+\vec{v}_{tube/​river}$
Line 126: Line 128:
     - $\text{Time}=\dfrac{\text{Distance}}{\text{Velocity}}$     - $\text{Time}=\dfrac{\text{Distance}}{\text{Velocity}}$
     - $t=\dfrac{20\text{m}}{2.0\text{m/​s}}=10\text{s}$     - $t=\dfrac{20\text{m}}{2.0\text{m/​s}}=10\text{s}$
-**Part 2**+==Part 2== 
 +{{ :​repository:​inner_tube_answer_2.png?​nolink&​600|}}
   - The goal to solving this problem is understanding that in order to go straight across the river, the x-component of the tube velocity must be equal and opposite to the velocity of the river, leaving just a positive y-component of the tube velocity. Therefore, you must paddle so that the x-component of your velocity is +1.5 m/s Using this fact, you can create a right triangle where the legs represent the x and y-components of the tube's velocity and the hypotenuse is the magnitude of the velocity (2.0 m/s). Knowing some trigonometry,​ we can find the angle with respect to the shore that you must launch in order to paddle straight across:   - The goal to solving this problem is understanding that in order to go straight across the river, the x-component of the tube velocity must be equal and opposite to the velocity of the river, leaving just a positive y-component of the tube velocity. Therefore, you must paddle so that the x-component of your velocity is +1.5 m/s Using this fact, you can create a right triangle where the legs represent the x and y-components of the tube's velocity and the hypotenuse is the magnitude of the velocity (2.0 m/s). Knowing some trigonometry,​ we can find the angle with respect to the shore that you must launch in order to paddle straight across:
     - $\cos(\theta)=\dfrac{1.5\text{m/​s}}{2.0\text{m/​s}}$     - $\cos(\theta)=\dfrac{1.5\text{m/​s}}{2.0\text{m/​s}}$
Line 139: Line 142:
     - Now we simply divide the river width by this velocity to calculate the time it takes to cross     - Now we simply divide the river width by this velocity to calculate the time it takes to cross
       - $t=\dfrac{20\text{m}}{1.323\text{m/​s}}=15.1\text{s}$. It makes sense that this value is higher than in Part 1 because the y-component of your velocity is smaller       - $t=\dfrac{20\text{m}}{1.323\text{m/​s}}=15.1\text{s}$. It makes sense that this value is higher than in Part 1 because the y-component of your velocity is smaller
-**Part 3**+==Part 3== 
 +{{ :​repository:​inner_tube_answer_3.png?​nolink&​600|}}
   - In order for the tube to remain stationary with respect to the shore, the velocity vector of the tube must point in the exact opposite direction as the river'​s velocity vector. Using vector addition, this will sum to 0. This can be done by making sure the magnitude of "​tubes"​ (line 23) matches the magnitude of "​riverv"​ (line 24). In order for the directions to match, "​degrees"​ (line 26) must equal 90; this makes the y-component of velocity equal to 0 and the x-component of velocity equal to "​tubes"​   - In order for the tube to remain stationary with respect to the shore, the velocity vector of the tube must point in the exact opposite direction as the river'​s velocity vector. Using vector addition, this will sum to 0. This can be done by making sure the magnitude of "​tubes"​ (line 23) matches the magnitude of "​riverv"​ (line 24). In order for the directions to match, "​degrees"​ (line 26) must equal 90; this makes the y-component of velocity equal to 0 and the x-component of velocity equal to "​tubes"​
-**Part 4**+==Part 4==
   - A while loop allows for repeated calculations. This is what creates the motion of the river and the tube when you run the code. The quantities that go inside a while loop are those that need to be updated/​changed;​ in this case that is the position of the tube   - A while loop allows for repeated calculations. This is what creates the motion of the river and the tube when you run the code. The quantities that go inside a while loop are those that need to be updated/​changed;​ in this case that is the position of the tube
   - dt represents a tiny change in time. As dt gets larger, the motion of the tube becomes jumpier/​less smooth   - dt represents a tiny change in time. As dt gets larger, the motion of the tube becomes jumpier/​less smooth
Line 148: Line 152:
   - They never appear because these prompts only show once the while loop is completed. Since the tube never crosses the river, the while loop never stops   - They never appear because these prompts only show once the while loop is completed. Since the tube never crosses the river, the while loop never stops
 ===Code=== ===Code===
-[[https://​www.glowscript.org/#/​user/​jbennett/folder/Private/program/relativemotionstudentversion ​| Link]] +[[https://​www.glowscript.org/#/​user/​porcaro1/folder/RepositoryPrograms/program/InnerTubeRiverCrossing-Solution ​| Link]] ​\\ 
-Note: No lines of code are added, only modified on a problem-to-problem basis, and these are what are highlighted below.+**Note**: No lines of code are added, only modified on a problem-to-problem basis, and these are what are highlighted below.
 <code Python [enable_line_numbers="​true",​ highlight_lines_extra="​12,​23,​24,​25,​37"​]>​ <code Python [enable_line_numbers="​true",​ highlight_lines_extra="​12,​23,​24,​25,​37"​]>​
 GlowScript 2.7 VPython GlowScript 2.7 VPython
 get_library('​https://​rawgit.com/​perlatmsu/​physutil/​master/​js/​physutil.js'​) get_library('​https://​rawgit.com/​perlatmsu/​physutil/​master/​js/​physutil.js'​)
 + 
 #Window setup #Window setup
 scene.range = 20 scene.range = 20
Line 159: Line 163:
 scene.height = 500 scene.height = 500
 scene.background=vector(0,​0.7,​0.1) scene.background=vector(0,​0.7,​0.1)
- +  
 + 
 #Objects #Objects
 w=20   #the width of the river w=20   #the width of the river
Line 170: Line 174:
 label(pos=vec(tube.pos.x,​w/​2,​0),​ text='​picnic site', color=color.black ) label(pos=vec(tube.pos.x,​w/​2,​0),​ text='​picnic site', color=color.black )
 label(pos=vec(-10,​-10,​0),​ text='​click to run', color=color.black ) label(pos=vec(-10,​-10,​0),​ text='​click to run', color=color.black )
- +  
 + 
 #Parameters and Initial Conditions #Parameters and Initial Conditions
-tubes=  #the magnitude of the tube's velocity +tubes=  #the magnitude of the tube's velocity 
-riverv = vector(0.5,​0,​0) ​  #the velocity of the river+riverv = vector(-1.5,​0,​0) ​  #the velocity of the river
 degrees=0 ​  #the launch angle with respect to the shore degrees=0 ​  #the launch angle with respect to the shore
 theta=degrees*pi/​180 theta=degrees*pi/​180
Line 181: Line 185:
 tubev=vec(tubesx,​tubesy,​0) tubev=vec(tubesx,​tubesy,​0)
 scale=1.0 scale=1.0
- +  
- +  
 + 
 #Time and time step #Time and time step
 t = 0 t = 0
 tf = 3 tf = 3
 dt = 0.01   #​adjusts the smoothness of motion dt = 0.01   #​adjusts the smoothness of motion
 + 
 tubeMotionMapx = MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColor=color.blue,​ labelMarkerOrder=False) tubeMotionMapx = MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColor=color.blue,​ labelMarkerOrder=False)
 tubeMotionMapy= MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColer=color.red,​ labelMarkerOrder=False,​ ) tubeMotionMapy= MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColer=color.red,​ labelMarkerOrder=False,​ )
 tubeMotionMapr= MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColor=color.green,​ labelMarkerOrder=False) tubeMotionMapr= MotionMap(tube,​ tf, 2, markerScale=scale,​ markerColor=color.green,​ labelMarkerOrder=False)
 + 
 ev = scene.waitfor('​click'​) ev = scene.waitfor('​click'​)
 + 
 #​Calculation Loop #​Calculation Loop
 while tube.pos.y<​w/​2: ​ while tube.pos.y<​w/​2: ​
Line 201: Line 205:
     tube.pos = tube.pos + tubev*dt     tube.pos = tube.pos + tubev*dt
     tube.pos = tube.pos + riverv*dt     tube.pos = tube.pos + riverv*dt
 + 
 #Set up motion map #Set up motion map
     relv = riverv + tubev     relv = riverv + tubev
Line 207: Line 211:
     tubeMotionMapx.update(t,​ tubev)     tubeMotionMapx.update(t,​ tubev)
     tubeMotionMapy.update(t,​ riverv)     tubeMotionMapy.update(t,​ riverv)
- +  
 + 
     t = t + dt     t = t + dt
-    ​+ 
 #determine angle #determine angle
 angle=atan(mag(riverv)/​mag(tubev))*(180/​pi) angle=atan(mag(riverv)/​mag(tubev))*(180/​pi)
 + 
 #label #label
 print("​time to cross =", t , "​s"​) print("​time to cross =", t , "​s"​)
Line 220: Line 224:
 ---- ----
 ====See Also==== ====See Also====
-  *[[ball_launch ​Ball Launch]] +  *[[triathlete'​s_dilemma ​Triathlete'​s Dilemma]] 
-  ​*[[block_on_a_ramp | Block on a Ramp]]+
  • repository/inner_tube_river_crossing.1582392829.txt.gz
  • Last modified: 2020/02/22 17:33
  • by porcaro1