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
summer_2019:glowscript_tips [2019/08/07 04:46]
wellerd
summer_2019:glowscript_tips [2019/08/13 00:27] (current)
wellerd
Line 23: Line 23:
   * **Printing values and text** - The ''​print()''​ command will output any value called from within the parentheses. You can print variables and attributes from your code as a way of checking what numbers the simulation has calculated. The following code creates a conical object named ''​IceCreamCone'',​ and the ''​print(IceCreamCone.size.x)''​ command prints the x-component of the object'​s size attribute. If you want to print text, it must be transformed into a "​string"​ of letters by using quotation marks within the ''​print()''​ command.   * **Printing values and text** - The ''​print()''​ command will output any value called from within the parentheses. You can print variables and attributes from your code as a way of checking what numbers the simulation has calculated. The following code creates a conical object named ''​IceCreamCone'',​ and the ''​print(IceCreamCone.size.x)''​ command prints the x-component of the object'​s size attribute. If you want to print text, it must be transformed into a "​string"​ of letters by using quotation marks within the ''​print()''​ command.
 <​code>​ <​code>​
-IceCreamCone=cone(pos=vec(10,20,0), axis=vec(5,0,0), size=vec(12,3,3+IceCreamCone=cone(pos=vec(0,0,0), axis=vec(0,-5,0), size=vec(3,1,1)
-print(IceCreamCone.size.x)+print("Ice cream cone length:", ​IceCreamCone.size.x)
 print("​Two scoops of butter pecan please!"​) print("​Two scoops of butter pecan please!"​)
 +</​code>​
 +
 +==== Graphing ====
 +  * **Graphs** - the most convenient graphs in Glowscript utilize the ''​gcurve''​ command which plots x-y data points as a scatterplot and connects the points with a line. In general, Three lines of code are needed to graph in Glowscript...
 +  - A line above the while loop which creates the axes and titles of the graph (line 3 in the picture below).
 +  - A line above the while loop which tells the program what you are about to graph (line 4 in the picture below).
 +  - A line inside of the while loop which plots the respective x-y data point for that iteration of the while loop (line 19 in the picture below).
 +{{:​summer_2019:​python-trinket-physics.png?​400|}}
 +
 +  * **Another graphing example** - In the following code, ''​MyGraph1''​ is needed to set up the graphing window with its various axes titles, minimum and maximum boundaries, and other features. The line with ''​HeightGraph''​ names a particular data-set that will be represented on our scatterplot. Lastly, **within the while loop**, the ''​HeightGraph.plot(t,​Cart.pos.y)''​ command is used to ''​plot''​ data points for our specified data-set (''​t''​ will be on the x-axis and ''​Cart.pos.y''​ will be on the y-axis).
 +<​code>​
 +MyGraph1 = graph(title='​Height vs Time', xtitle='​Time (s)', ytitle='​Height (m)', fast=False) #Name our graph and set some features
 +HeightGraph = gcurve(color=color.red,​ label='​Height'​) # Specifies a name for the data-set that we will be plotting
 +
 +Cart=box(pos=vec(0,​0,​0),​ size=vec(1,​1,​1),​color=color.magenta)
 +t=0
 +dt=1
 +while True:
 +    rate(100)
 +    Cart.pos=Cart.pos+vec(0,​1,​0)*dt
 +        ​
 +    # This line plots data points as the program iterates
 +    HeightGraph.plot(t,​Cart.pos.y) # t will be on the x-axis and Cart.pos.y will be on the y-axis
 +    ​
 +    t=t+dt
 +</​code>​
 +
 +==== Programmer Logic ====
 +* **If-then statements** - these act as triggers to start some new event once a condition in met. For example, it we have an object moving to the right with ''​particle.velocity=vec(1,​0,​0)''​ and we want it to move in the opposite direction after 10 seconds, then you might use the following code.
 +<​code>​
 +Particle = sphere(pos=vec(0,​0,​0))
 +Particle.velocity=vec(1,​0,​0)
 +
 +t=0
 +dt=1
 +tf=20
 +
 +while t >= tf:
 +  rate(100)
 +  Particle.pos=Particle.pos+Particle.velocity*dt
 +
 +  if t >= 10:
 +    Particle.velocity=vec(-1,​0,​0)
 +
 +  t=t+dt
 </​code>​ </​code>​
  
Line 39: Line 84:
 AbsoluteNumber = abs(Number) AbsoluteNumber = abs(Number)
 </​code>​ </​code>​
-  * **Exponents** - to write an exponent in Python you have to use a ''​$**$'' ​rather than ''​$^$''​. For example, to write $A=5.43*10^4$ in code you would write:+  * **Exponents** - to write an exponent in Python you have to use a $**$ rather than ^. For example, to write $A=5.43*10^4$ in code you would write:
 <​code>​ <​code>​
 A=5.42*10**4 A=5.42*10**4
Line 63: Line 108:
 mag1=mag(vector1) #This will calculate sqrt(1^2+2^2+3^2) mag1=mag(vector1) #This will calculate sqrt(1^2+2^2+3^2)
 </​code>​ </​code>​
- 
-==== Graphing ==== 
- 
  
 ==== Tips for Coding ==== ==== Tips for Coding ====
Line 82: Line 124:
 R=20 #cm (Everything in this line before the # would run in the program, everything after the # is ignored) R=20 #cm (Everything in this line before the # would run in the program, everything after the # is ignored)
 </​code>​ </​code>​
 +  * **Indentation errors** - these can be tricky sometimes. The best way to fix these is to [BACKSPACE] the faulty code up to the line above it and then pressing [ENTER] again to separate the lines and reset the indentation. This is not the only way to fix indentation errors.
  
 ==== Math Review ==== ==== Math Review ====
 Check out this link for a **[[http://​p3server.pa.msu.edu/​coursewiki/​doku.php?​id=184_notes:​math_review#​Vector_Notation|useful math review]]**. Check out this link for a **[[http://​p3server.pa.msu.edu/​coursewiki/​doku.php?​id=184_notes:​math_review#​Vector_Notation|useful math review]]**.
  • summer_2019/glowscript_tips.1565153188.txt.gz
  • Last modified: 2019/08/07 04:46
  • by wellerd