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:colliding_crates [2020/02/18 00:13]
porcaro1 [Activity]
repository:colliding_crates [2021/02/17 17:36] (current)
porcaro1 [Answer Key]
Line 1: Line 1:
- +=====Colliding Crates=====
 ====Activity Information==== ====Activity Information====
 ===Learning Goals=== ===Learning Goals===
-  * Demonstrate an understanding of how to write equations of motion, given constant velocity (position-time equation)+  * Demonstrate an understanding of how to write equations of motion, given constant velocity (position-time equation) ([[https://​www.nextgenscience.org/​pe/​hs-ps2-1-motion-and-stability-forces-and-interactions | HS-PS2-1]])
   * Develop proficiency in basic programming using the vPython language through GlowScript   * Develop proficiency in basic programming using the vPython language through GlowScript
  
Line 17: Line 16:
 ====Activity==== ====Activity====
 ===Handout=== ===Handout===
 +{{ :​repository:​colliding_crates_1.png?​nolink&​600|}}
 ** Colliding Crates ** ** Colliding Crates **
  
-{{ :​repository:​colliding_crates.png?​nolink&​600|}} 
 In this activity, you will be asked to complete several tasks involving what you have learned about describing motion and applying this knowledge to actual computer program code.  In describing motion at this point, we need to consider both position and velocity. ​ To keep this activity simpler, you will be working with constant velocity, either positive or negative.  ​ In this activity, you will be asked to complete several tasks involving what you have learned about describing motion and applying this knowledge to actual computer program code.  In describing motion at this point, we need to consider both position and velocity. ​ To keep this activity simpler, you will be working with constant velocity, either positive or negative.  ​
  
- +First, you will need to go to GlowScript.org and create your own free account to begin adapting the [[https://​www.glowscript.org/#/​user/​porcaro1/folder/RepositoryPrograms/program/CollidingCrates-Incomplete/edit | computer code]] listed below. ​ Next, select "​create a new program"​ and copy and paste the code below to begin your adventure. ​ Make sure you copy all of it.
-First, you will need to go to GlowScript.org and create your own free account to begin adapting the [[https://​www.glowscript.org/#/​user/​kstedman/folder/Public/program/CollidingCars/edit | computer code]] listed below. ​ Next, select "​create a new program"​ and copy and paste the code below to begin your adventure. ​ Make sure you copy all of it.+
   - Change the size of the box to make it smaller.   - Change the size of the box to make it smaller.
   - You will notice that the red crate is floating above the floor. ​ Put this crate on the floor, far left side, by changing the code.   - You will notice that the red crate is floating above the floor. ​ Put this crate on the floor, far left side, by changing the code.
Line 36: Line 34:
   - How could you make the crates meet sooner/​later?  ​   - How could you make the crates meet sooner/​later?  ​
 ===Code=== ===Code===
 +[[https://​www.glowscript.org/#/​user/​porcaro1/​folder/​RepositoryPrograms/​program/​CollidingCrates-Incomplete/​edit | Link]]
 <code Python [enable_line_numbers="​true"​]>​ <code Python [enable_line_numbers="​true"​]>​
 GlowScript 2.7 VPython GlowScript 2.7 VPython
Line 45: Line 44:
 #Setting the time interval #Setting the time interval
 t=0                                                                             #​I'​ve set the initial time to zero. t=0                                                                             #​I'​ve set the initial time to zero.
-tf=0.940 ​                                                                           #I've set the final time to 0, which gives the crate enough time to slide across the floor+tf=0.940 ​                                                                       #I've set the final time to 0, which gives the crate enough time to slide across the floor
 dt=0.01 ​                                                                        #I want my time interval set at 1/100th of a time unit dt=0.01 ​                                                                        #I want my time interval set at 1/100th of a time unit
  
Line 63: Line 62:
    
 #This creates the graph of the kinetic energy of the crate #This creates the graph of the kinetic energy of the crate
-#f1 = gcurve(color=color.blue) ​                                                  #​Setting up a graph to show the kinetic energy of the crate as a function of time +f1 = gcurve(color=color.blue) ​                                                  #​Setting up a graph to show the kinetic energy of the crate as a function of time 
-#for t in arange(0, 0.94, 0.01): ​                                                # Time goes from 0 to 0.94 in 0.01 time intervals +for t in arange(0, 0.94, 0.01): ​                                                # Time goes from 0 to 0.94 in 0.01 time intervals 
-   ​f1.plot(pos=(t,​cratev.mag**2))                                             ​# plot time vs. kinetic energy of the crate +    f1.plot(pos=(t,​cratev.mag**2))                                         ​# plot time vs. kinetic energy of the crate</​code>​
-    ​</​code>​+
  
 ---- ----
 ====Answer Key==== ====Answer Key====
 ===Handout=== ===Handout===
 +{{ :​repository:​collding_crates_2.png?​nolink&​600|}}
   - Edit the "​size=vector(20,​20,​5)"​ segment of line 5   - Edit the "​size=vector(20,​20,​5)"​ segment of line 5
   - Edit line 5, changing "​pos=vector(0,​0,​0)"​ to "​pos=vector(-40,​-20,​0)"​   - Edit line 5, changing "​pos=vector(0,​0,​0)"​ to "​pos=vector(-40,​-20,​0)"​
Line 85: Line 84:
  
 ===Code=== ===Code===
-[[https://​www.glowscript.org/#/​user/​kstedman/folder/Public/program/CollidingCarsKey/edit | Link ]] +[[https://​www.glowscript.org/#/​user/​porcaro1/folder/RepositoryPrograms/program/CollidingCrates-Solution/edit | Link ]] 
-<​code>​+<​code ​Python [enable_line_numbers="​true",​ highlight_lines_extra="​5,​6,​16,​19,​20,​21,​24,​29"​]>
 GlowScript 2.7 VPython GlowScript 2.7 VPython
  
 #Creating the objects #Creating the objects
 floor = box(pos=vector(0,​-30,​0),​ size=vector(100,​4,​12),​ color=color.white) ​     #I've created the floor that the crate will slide across floor = box(pos=vector(0,​-30,​0),​ size=vector(100,​4,​12),​ color=color.white) ​     #I've created the floor that the crate will slide across
-crate1 = box(pos=vector(-40,​-20,​0),​ size=vector(20,​20,​5),​ color=color.red) ​          ​#I've created the crate, along with its dimensions and initial position resting on the floor+crate1 = box(pos=vector(-40,​-20,​0),​ size=vector(20,​20,​5),​ color=color.red) ​     #I've created the crate, along with its dimensions and initial position resting on the floor
 crate2 = box(pos=vector(40,​-20,​0),​ size=vector(20,​20,​5),​ color=color.blue) crate2 = box(pos=vector(40,​-20,​0),​ size=vector(20,​20,​5),​ color=color.blue)
  
 #Setting the time interval #Setting the time interval
 t=0                                                                             #​I'​ve set the initial time to zero. t=0                                                                             #​I'​ve set the initial time to zero.
-tf=0.940 ​                                                                           #I've set the final time to 0, which gives the crate enough time to slide across the floor+tf=0.940 ​                                                                       #I've set the final time to 0, which gives the crate enough time to slide across the floor
 dt=0.01 ​                                                                        #I want my time interval set at 1/100th of a time unit dt=0.01 ​                                                                        #I want my time interval set at 1/100th of a time unit
  
 #Creates velocity vectors as a function of time #Creates velocity vectors as a function of time
 get_library('​https://​rawgit.com/​perlatmsu/​physutil/​master/​js/​physutil.js'​) ​     #The program needed to know what a motion map is defined as get_library('​https://​rawgit.com/​perlatmsu/​physutil/​master/​js/​physutil.js'​) ​     #The program needed to know what a motion map is defined as
-motionMap1 = MotionMap(crate1,​ tf, 5, markerScale=0.1) ​                          ​#I want to display 5 arrows showing the motion of the crate+motionMap1 = MotionMap(crate1,​ tf, 5, markerScale=0.1) ​                         #I want to display 5 arrows showing the motion of the crate
 motionMap2 = MotionMap(crate2,​ tf, 5, markerScale=0.1) motionMap2 = MotionMap(crate2,​ tf, 5, markerScale=0.1)
  
 #Giving the objects an initial velocity #Giving the objects an initial velocity
-crate1v=vector(25,​0,​0) ​                                                          ​#I'm defining the constant velocity of my crate to be 75 in the x-direction(left to right) ​                                      +crate1v=vector(25,​0,​0) ​                                                         #I'm defining the constant velocity of my crate to be 25 in the x-direction(left to right) ​                                      
 crate2v=vector(-15,​0,​0) crate2v=vector(-15,​0,​0)
-while crate2.pos.x-crate1.pos.x>​20: ​                                                          ​#I want the crate to stop before it slides off the floor+while crate2.pos.x-crate1.pos.x>​20: ​                                            ​#I want the crate to stop before it slides off the floor
     rate(50) ​                                                                   #This rate can speed up or slow down the replay     rate(50) ​                                                                   #This rate can speed up or slow down the replay
-    crate1.pos=crate1.pos+crate1v*dt ​                                              ​#I'm moving the crate by adding the change in position (cratev*dt) to the previous position (crate.pos)+    crate1.pos=crate1.pos+crate1v*dt ​                                           #I'm moving the crate by adding the change in position (cratev*dt) to the previous position (crate.pos)
     crate2.pos=crate2.pos+crate2v*dt     crate2.pos=crate2.pos+crate2v*dt
     t=t+dt ​                                                                     #I'm updating the time     t=t+dt ​                                                                     #I'm updating the time
     ​     ​
 #This updates the velocity vectors #This updates the velocity vectors
-    motionMap1.update(t,​crate1v) ​                                                 #This updates the motion map and display of the arrows as the crate slides across the floor+    motionMap1.update(t,​crate1v) ​                                               #This updates the motion map and display of the arrows as the crate slides across the floor
     motionMap2.update(t,​crate2v)     motionMap2.update(t,​crate2v)
    
Line 120: Line 119:
 f1 = gcurve(color=color.blue) ​                                                  #​Setting up a graph to show the kinetic energy of the crate as a function of time f1 = gcurve(color=color.blue) ​                                                  #​Setting up a graph to show the kinetic energy of the crate as a function of time
 for t in arange(0, 0.94, 0.01): ​                                                # Time goes from 0 to 0.94 in 0.01 time intervals for t in arange(0, 0.94, 0.01): ​                                                # Time goes from 0 to 0.94 in 0.01 time intervals
-    f1.plot(pos=(t,​crate1v.mag**2))  ​                                           # plot time vs. kinetic energy of the crate +    f1.plot(pos=(t,​crate1v.mag**2))  ​                                           # plot time vs. kinetic energy of the crate</​code>​
-    ​</​code>​+
  
 ---- ----
 ====See Also==== ====See Also====
-[[football_players ​Football Players ​]]+  * [[head-on_collision ​Head-On Collision]] 
 +  * [[rear-end_collision | Rear-End Collision]] 
 +  * [[phineas_&​_ferb | Phineas & Ferb]]
  • repository/colliding_crates.1581984781.txt.gz
  • Last modified: 2020/02/18 00:13
  • by porcaro1