Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
repository:inner_tube_river_crossing [2021/02/18 19:46] porcaro1 [Activity Information] |
repository:inner_tube_river_crossing [2021/02/18 19:54] (current) porcaro1 [Answer Key] |
||
---|---|---|---|
Line 24: | Line 24: | ||
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? | ||
Line 46: | 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 152: | 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 163: | 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 174: | 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=0 #the magnitude of the tube's velocity | + | tubes=2 #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 185: | 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 205: | 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 211: | 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") |