turtles-own [col ;sets color of an explosion particle x-vel ;x-velocity y-vel ;y-velocity ] breeds [rockets frags] rockets-own [ terminal-y-vel ] ;velocity at which rocket will explode frags-own [ dim ] ;used for fading particles ;SETUP ;----- ;This function clears the graphics window of all patches and turtles. to setup ca end ;GO ;-- ;This function executes the model. If there are no turtles, then it creates a random number ;according to the slider FIREWORKS and sets all the initial values for each firework. ;It then calls PROJECTILE-MOTION, which launches and explodes the fireworks. to go if not any turtles [ifelse (sledi) ;;used so that the trails don't immediately disappear [wait 1] [wait .3] cg create-custom-rockets (random raket) [setxy (random (screen-edge-x * screen-edge-x)) (0 - (screen-edge-y)) set x-vel ((random (2 * z-hitrost-x)) - (z-hitrost-x)) set y-vel ((random z-hitrost-x) + z-hitrost-x * 2 ) set col ((random 14) + 1) * 10 - 5 ;; reports a random 'primary' color i.e. 5, 15, 25, etc. set color (col + 2) set terminal-y-vel (random 4.0) ;; at what speed does the rocket explode? ] ] ;we don't want the model to run too quickly because otherwise, you wouldn't be able to see the fireworks every 0.03 [ask turtles [ projectile-motion ] ] end ;PROJECTILE-MOTION ;----------------- ;This function simulates the actual free-fall motion of the turtles. ;If a turtle is a rocket it checks if it has slowed down enough to explode. to projectile-motion ;; turtle procedure set y-vel (y-vel - (teznost / 5)) killwrap set heading (atan x-vel y-vel) fd (sqrt ((x-vel ^ 2) + (y-vel ^ 2))) ifelse (breed = rockets) [if (y-vel < terminal-y-vel) [explode die ] ] [fade] end ;EXPLODE ;------- ;This is where the explosion is created. ;EXPLODE calls hatch a number of times indicated by the slider FRAGMENTS. to explode ;; turtle procedure hatch iskric [ set breed frags set dim 0 rt random 360.0 set x-vel (x-vel * .5 + (sin heading) + (random 2.0) - 1) set y-vel (y-vel * .3 + (cos heading) + (random 2.0) - 1) ifelse (sledi) [ pd ] [ pu ] ] end ;FADE ;---- ;This function changes the color of a frag. ;Each frag fades its color by an amount proportional to FADE-AMOUNT. to fade ;; frag procedure set dim dim - (ugasanje / 10) set color scale-color col dim -5 .5 if ( color < (col - 3.5) ) [die] end ;KILLWRAP ;-------- ;This function is used to keep the turtles within the vertical bounds of the graphics window. ;If they go above or below the the vertical axis of the screen, they die. to killwrap ;; turtle procedure if ( (ycor + (y-vel - (teznost / 5))) <= (0 - screen-edge-y) ) [die] if ( (ycor + (y-vel - (teznost / 5))) >= (screen-edge-y) ) [die] end ; *** NetLogo Model Copyright Notice *** ; ; This model was created as part of the project: CONNECTED MATHEMATICS: ; MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL ; MODELS (OBPML). The project gratefully acknowledges the support of the ; National Science Foundation (Applications of Advanced Technologies ; Program) -- grant numbers RED #9552950 and REC #9632612. ; ; Copyright 1998 by Uri Wilensky. All rights reserved. ; ; Permission to use, modify or redistribute this model is hereby granted, ; provided that both of the following requirements are followed: ; a) this copyright notice is included. ; b) this model will not be redistributed for profit without permission ; from Uri Wilensky. ; Contact Uri Wilensky for appropriate licenses for redistribution for ; profit. ; ; This model was converted to NetLogo as part of the project: ; PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN ; CLASSROOMS. The project gratefully acknowledges the support of the ; National Science Foundation (REPP program) -- grant number REC #9814682. ; Converted from StarLogoT to NetLogo, 2001. Updated 2002. ; ; To refer to this model in academic publications, please use: ; Wilensky, U. (1998). NetLogo Fireworks model. ; http://ccl.northwestern.edu/netlogo/models/Fireworks. ; Center for Connected Learning and Computer-Based Modeling, ; Northwestern University, Evanston, IL. ; ; *** End of NetLogo Model Copyright Notice *** @#$#@#$#@ GRAPHICS-WINDOW 300 20 662 382 90 90 2.0 0 10 0 0 CC-WINDOW 300 400 662 520 Command Center BUTTON 30 40 124 73 nastavitve setup NIL 1 T OBSERVER BUTTON 30 90 110 123 izvajaj go T 1 T OBSERVER SWITCH 30 140 120 173 sledi sledi 0 1 -1000 SLIDER 140 40 260 73 raket raket 1 40 20 1 1 NIL SLIDER 140 90 260 123 iskric iskric 5 50 30 1 1 NIL SLIDER 140 140 260 173 z-hitrost-x z-hitrost-x 0.0 5.0 2.0 0.1 1 NIL SLIDER 140 190 260 223 z-hitrost-y z-hitrost-y 0.0 5.0 2.0 0.1 1 NIL SLIDER 140 240 260 273 teznost teznost 0.0 3.0 0.5 0.1 1 NIL SLIDER 140 290 260 323 ugasanje ugasanje 0.0 10.0 1.4 0.1 1 NIL @#$#@#$#@ WHAT IS IT? ----------- This program models the action of fireworks. A rocket begins at the bottom of the screen, shoots upwards into the sky and then explodes, emitting a shower of descending sparks. Each rocket, represented by a turtle, is launched upward with an initial x and y velocity. At a certain point in the sky, an explosion occurs, which is represented by a series of turtle hatches. Each hatched turtle inherits the velocity from the original rocket in addition to velocity from the explosion itself. The result is a simulation of a fireworks display. HOW TO USE IT ------------- SETUP sets up the model according to the values indicated by all the sliders and the switch. GO is a forever button that executes the model continually. FIREWORKS creates a random number of fireworks between 0 and the number indicated on the slider. FRAGMENTS determines how many particle fragments will emerge after the explosion of a single firework. GRAVITY determines the gravitational strength in the environment. A larger value will give a greater gravitational acceleration, meaning that particles will be forced to the ground at a faster rate. The inverse is true for smaller values. INIT-X-VEL sets the initial x-velocity of each rocket to a random number between the negative and positive value of the number indicated on the slider. INIT-Y-VEL sets the initial y-velocity of each rocket to a random number between 0 and the number indicated on the slider plus ten. This is to ensure that there is a range of difference in the initial y-velocities of the fireworks. FADE-AMOUNT determines the rate at which the explosion particles fade after the explosiion. TRAILS allows the user to turn the trails left by the explosion particles on or off. In other words, if the TRAILS switch is ON, then the turtles will leave trails. If it is OFF, then they will not leave trails. This model has been constructed so that all changes in the sliders and switches will take effect in the model during execution. So, while the GO button is still down, you can change the values of the sliders and the switch, and you can see these changes being represented on the graphics window. THINGS TO NOTICE ---------------- Experiment with the INIT-X-VEL and INIT-Y-VEL sliders. Observe that at an initial x-velocity of zero, the rockets launch straight upwards. When the initial x-velocity is increased, notice that some rockets make an arc to the left or right in the sky depending on whether the initial x-velocity is negative or positive. With the initial y-velocity, observe that, on a fixed GRAVITY value, the heights of the fireworks are lower on smaller initial y-velocities and higher on larger ones. Also observe that each rocket explodes at a height equal to or a little less than its apex. THINGS TO TRY ------------- Observe what happens to the model when the GRAVITY slider is set to different values. Watch what happens to the model when GRAVITY is set to zero. Can you explain what happens to the fireworks in the model? Can you explain why this phenonmenon occurs? What does this say about the importance of gravity? Now set the GRAVITY slider to its highest value. What is different about the behavior of the fireworks at this setting? What can you conclude about the relationship between gravity and how objects move in space? EXTENDING THE MODEL ------------------- The fireworks represented in this model are only of one basic type. A good way of extending this model would be to create other more complex kinds of fireworks. Some could have multiple explosions, multiple colors, or a specific shape engineered into their design. Notice that this model portrays fireworks in a two-dimensional viewpoint. When we see real fireworks, however, they appear to take a three-dimensional form. Try extending this model by converting its viewpoint from 2D to 3D. NETLOGO FEATURES ---------------- An important aspect of this model is the fact that each particle from an explosion inherits the properties of the original firework. This informational inheritance allows the model to adequately represent the projectile motion of the firework particles since their initial x and y velocities are relative to their parent firework. To visually represent the fading property of the firework particles, this model made use of the reporter 'scale-color'. As the turtle particles fall to the ground, they hold their pens down and gradually scale their color to black. As mentioned above, the rate of fade can be controlled using the FADE-AMOUNT slider. CREDITS AND REFERENCES ---------------------- To refer to this model in academic publications, please use: Wilensky, U. (1998). NetLogo Fireworks model. http://ccl.northwestern.edu/netlogo/models/Fireworks. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. @#$#@#$#@ default true 0 Polygon -7566196 true true 150 5 40 250 150 205 260 250 @#$#@#$#@ NetLogo 1.2.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@