VPython: Difference between revisions
(Introduction) |
No edit summary Tag: Manual revert |
||
(92 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
VPython is a Python graphics module used for modeling objects in 3-dimensional space. In the field of physics, this is especially useful for calculating and modeling complex relationships between objects and their properties. | VPython is a Python graphics module used for modeling objects in 3-dimensional space. In the field of physics, this is especially useful for calculating and modeling complex relationships between objects and their properties. | ||
[[File:VPythonMagneticForceAnimated.gif|thumb|VPython modeling the magnetic force on a moving particle]] | |||
==Installation== | |||
VPython is compatible with Windows, OSX, and Linux. While there is an older VPython version available that supports Python 3, the Georgia Tech physics courses use Python 2 syntax so it is recommended to install the latest version of VPython as outlined below. | |||
===Windows=== | |||
[[File:VPythonWindows.png|thumb|VPython running in Windows 7]] | |||
1. Install [http://python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi Python-2.7]. | |||
2. Download and install VPython from [http://sourceforge.net/projects/vpythonwx/files/6.11-release/VPython-Win-64-Py2.7-6.11.exe/download Sourceforge]. | |||
To troubleshoot any installation issues, look at the extensive [http://vpython.org/contents/download_windows.html VPython Windows installation guide]. | |||
== | ===OSX=== | ||
[[File:VPythonOSX.png|thumb|VPython running in OSX 10.10]] | |||
1. Install [https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.6.pkg Python-2.7]. This is required as the version of Python that Apple provides is not compatible. | |||
=== | 2. Download and install the VPython package from [http://sourceforge.net/projects/vpythonwx/files/6.11-release/VPython-Mac-Py2.7-6.11.dmg/download Sourceforge]. | ||
=== | |||
=== | |||
To troubleshoot installation issues, see the extensive [http://vpython.org/contents/download_mac.html VPython Mac installation guide]. | |||
===GNU/Linux=== | |||
[[File:VPythonUbuntu.png|thumb|VPython running in Ubuntu 15.04+]] | |||
Some Linux distributions include VPython in their repositories. For example, to install VPython in Ubuntu 15.04: | |||
<code>sudo apt-get install python-visual</code> | |||
If your Linux distribution's repository does not have the latest version of VPython, you can run the Windows version using [https://www.winehq.org/ Wine]. The [http://vpython.org/contents/download_linux.html VPython Linux installation guide] contains detailed instructions. | |||
==Getting started with VPython== | |||
The easiest way to use VPython is with VIDLE. VIDLE is a development environment and is the most useful for editing and running code. To start, open the VIDLE application (it may be called something like VIDLE-Py2.7). A blank file should open. Type the following two lines in: | |||
<code>from __future__ import division | |||
from visual import *</code> | |||
The first line tells Python to not use integer division, which would result in <code>1/3</code> returning the floor <code>0</code> instead of <code>0.3333333333333333</code>. The second line tells Python to import everything from the visual (VPython) library for you to use. | |||
After these two lines, you can create objects, assign variables, do calculations, and much more. You can also run VPython from the command line, although it may require additional setup so Python can locate the <code>visual</code> module. | |||
===Glowscript=== | |||
Another useful method of using Vpython can be found at http://www.glowscript.org/. At this website, a user can make an account and have a script up and running within minutes on a web browser without having to deal with downloading any software or worrying about compatibility. Only downside is that it can be tricky to save the code for submitting to Webassign. | |||
==Creating VPython Objects== | |||
When you create objects, it is often useful to assign them to variables so you can reference them later to either get or set values describing for example the position and size of the object. | |||
'''Sphere''' | |||
<code>particle = sphere(pos=(0,0,0), radius=4, color=color.blue)</code> | |||
This creates a blue sphere centered at the origin <0,0,0> with radius 4. | |||
'''Arrow''' | |||
<code>arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green)</code> | |||
This creates a green arrow pointing from <0,2,0> to <0,10,0>. Note that <code>axis</code> is always relative to the start of the arrow, not the origin <0,0,0>. | |||
'''Cylinder''' | |||
<code>wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow)</code> | |||
This creates a yellow cylinder starting at the origin <0,0,0> and extending to <20,0,0> with radius 1. | |||
'''Helix''' | |||
<code>spring = helix(pos=(0,0,0), axis=(10,0,0), radius=0.75, color=color.cyan)</code> | |||
Creates a helix of color cyan at the origin and goes to <10,0,0> with a radius of 0.75. | |||
'''Pyramid''' | |||
<code>shape = pyramid(pos=(8,4,0), size=(20,4,10), color=color.red)</code> | |||
Creates a pyramid of size <20,4,10> starting at <8,4,0> | |||
'''Object Positioning''' | |||
It is very important to note that the position values for arrow, cylinder, helix, and pyramid corresponds to one end of the object, however for a box, sphere, or ring it corresponds to the center of the object. | |||
'''Example''' | |||
[[File:VPythonObjects.png|thumb|Result of example code]] | |||
<nowiki> | |||
from __future__ import division | |||
from visual import * | |||
particle = sphere(pos=(0,0,0), radius=4, color=color.blue) | |||
arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green) | |||
wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow)</nowiki> | |||
'''Updating objects''' | |||
If you assign an object to a variable (such as <code>particle</code> or <code>arrowToOrigin</code> above) you can adjust its parameters such as its location. For the above sphere, you can change its location to <-5,-5,0> with: | |||
<code>particle.pos=(-5,-5,0)</code> | |||
To change the axis of the above arrow to point to <-10,5,0>, use: | |||
<code>arrowToOrigin.axis=(-10,5,0)</code> | |||
To change the radius of the above cylinder to 3, use: | |||
<code>wire.radius=3</code> | |||
'''Example''' | |||
[[File:VPythonObjectsChanged.png|thumb|Result of example code]] | |||
<nowiki> | |||
from __future__ import division | |||
from visual import * | |||
particle = sphere(pos=(0,0,0), radius=4, color=color.blue) | |||
arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green) | |||
wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow) | |||
particle.pos=(-5,-5,0) | |||
arrowToOrigin.axis=(-10,5,0) | |||
wire.radius=3</nowiki> | |||
==Useful built-in functions== | |||
VPython includes various functions that can make your calculations much easier. The following functions simplify mathematical operations on vectors and will come in handy very often. | |||
'''Cross-multiply two vectors''' | |||
<code>cross(vectorA, vectorB)</code> | |||
'''Magnitude of a vector''' | |||
<code>mag(vector)</code> | |||
'''Square of the Magnitude of a vector''' | |||
<code>mag2(vector)</code> | |||
'''Unit vector of a vector''' | |||
<code>norm(vector)</code> | |||
'''Square Root''' | |||
<code>sqrt(value)</code> | |||
'''Absolute Value''' | |||
<code>abs(value)</code> | |||
==VPython Operators== | |||
===Mathematical Operators=== | |||
1) # comment out a line | |||
2) + - * / addition, subtraction, multiplication, division | |||
3) ** exponential | |||
4) % modulus or remainder | |||
===Logical Operators=== | |||
1) == outputs true if the compared values are the same | |||
2) != outputs true if the compared values are not the same | |||
3) > or < outputs true if the compared values are greater or less than the other | |||
4) >= or <= Same as above but outputs true if greater or less than or equal to the compared value | |||
==Connectedness== | ==Connectedness== | ||
I am very interested in programming. I have used Python for years, so translating Physics problems into VPython code is a great way to cement the fundamental ideas in my mind. | |||
VPython is a great tool to bridge the worlds of Computer Science and Physics. Many of the calculations required to model a physical object would be tedious if done by hand. Yet with often a few lines of code, this work can be reduced to almost nothing. | |||
NASA has published [http://gcmd.gsfc.nasa.gov/KeywordSearch/Metadata.do?Portal=GCMD&MetadataType=1&MetadataView=Full&KeywordPath=&EntryId=3-D_ES-Models VPython models]. However, VPython is still primarily used in an educational context. | |||
==History== | ==History== | ||
VPython was originally released in 2000 by David Scherer after he took an introductory physics class at Carnegie Mellon University. At the time, the school used the cT programming language for 2D modeling, and David saw the need for something better. Working with several people including professors Ruth Chabay and Bruce Sherwood, he developed a Python module called Visual. Visual Python or VPython featured 3D modeling, as well as an easier-to-understand object-oriented syntax. Beginning in 2002, the National Science Foundation had awarded $292,286.00 as of December 2015 for the further development of this tool. VPython is released under an Open Source license, and development continues today. | |||
== See also == | == See also == | ||
If you have never used Python, the [[VPython_basics| VPython Basics]] wiki page has information for getting started with Python programming. | |||
===Further reading=== | ===Further reading=== | ||
Aiken, John M (2013). ''Transforming High School Physics With Modeling And Computation''. Georgia State University. | |||
===External links=== | ===External links=== | ||
[http://www.wired.com/2015/08/coding-physics-course/ You Should Be Coding in Your Physics Course] | |||
[http://vpython.wikidot.com/ VPython Wiki Site] | |||
[https://groups.google.com/forum/#!forum/vpython-users VPython user group] | |||
==References== | ==References== | ||
Line 52: | Line 205: | ||
This section contains the the references you used while writing this page | This section contains the the references you used while writing this page | ||
[[Category: | [http://vpython.org/contents/cTsource/cToverview.html The cT Programming Language] | ||
[https://wiki.python.org/moin/VPython/ VPython - Python Wiki] | |||
[http://www.nsf.gov/awardsearch/showAward?AWD_ID=0237132 VPython NSF Award] | |||
[[Category:VPython]] |
Latest revision as of 21:49, 24 April 2022
VPython is a Python graphics module used for modeling objects in 3-dimensional space. In the field of physics, this is especially useful for calculating and modeling complex relationships between objects and their properties.
Installation
VPython is compatible with Windows, OSX, and Linux. While there is an older VPython version available that supports Python 3, the Georgia Tech physics courses use Python 2 syntax so it is recommended to install the latest version of VPython as outlined below.
Windows
1. Install Python-2.7.
2. Download and install VPython from Sourceforge.
To troubleshoot any installation issues, look at the extensive VPython Windows installation guide.
OSX
1. Install Python-2.7. This is required as the version of Python that Apple provides is not compatible.
2. Download and install the VPython package from Sourceforge.
To troubleshoot installation issues, see the extensive VPython Mac installation guide.
GNU/Linux
Some Linux distributions include VPython in their repositories. For example, to install VPython in Ubuntu 15.04:
sudo apt-get install python-visual
If your Linux distribution's repository does not have the latest version of VPython, you can run the Windows version using Wine. The VPython Linux installation guide contains detailed instructions.
Getting started with VPython
The easiest way to use VPython is with VIDLE. VIDLE is a development environment and is the most useful for editing and running code. To start, open the VIDLE application (it may be called something like VIDLE-Py2.7). A blank file should open. Type the following two lines in:
from __future__ import division
from visual import *
The first line tells Python to not use integer division, which would result in 1/3
returning the floor 0
instead of 0.3333333333333333
. The second line tells Python to import everything from the visual (VPython) library for you to use.
After these two lines, you can create objects, assign variables, do calculations, and much more. You can also run VPython from the command line, although it may require additional setup so Python can locate the visual
module.
Glowscript
Another useful method of using Vpython can be found at http://www.glowscript.org/. At this website, a user can make an account and have a script up and running within minutes on a web browser without having to deal with downloading any software or worrying about compatibility. Only downside is that it can be tricky to save the code for submitting to Webassign.
Creating VPython Objects
When you create objects, it is often useful to assign them to variables so you can reference them later to either get or set values describing for example the position and size of the object.
Sphere
particle = sphere(pos=(0,0,0), radius=4, color=color.blue)
This creates a blue sphere centered at the origin <0,0,0> with radius 4.
Arrow
arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green)
This creates a green arrow pointing from <0,2,0> to <0,10,0>. Note that axis
is always relative to the start of the arrow, not the origin <0,0,0>.
Cylinder
wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow)
This creates a yellow cylinder starting at the origin <0,0,0> and extending to <20,0,0> with radius 1.
Helix
spring = helix(pos=(0,0,0), axis=(10,0,0), radius=0.75, color=color.cyan)
Creates a helix of color cyan at the origin and goes to <10,0,0> with a radius of 0.75.
Pyramid
shape = pyramid(pos=(8,4,0), size=(20,4,10), color=color.red)
Creates a pyramid of size <20,4,10> starting at <8,4,0>
Object Positioning
It is very important to note that the position values for arrow, cylinder, helix, and pyramid corresponds to one end of the object, however for a box, sphere, or ring it corresponds to the center of the object.
Example
from __future__ import division from visual import * particle = sphere(pos=(0,0,0), radius=4, color=color.blue) arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green) wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow)
Updating objects
If you assign an object to a variable (such as particle
or arrowToOrigin
above) you can adjust its parameters such as its location. For the above sphere, you can change its location to <-5,-5,0> with:
particle.pos=(-5,-5,0)
To change the axis of the above arrow to point to <-10,5,0>, use:
arrowToOrigin.axis=(-10,5,0)
To change the radius of the above cylinder to 3, use:
wire.radius=3
Example
from __future__ import division from visual import * particle = sphere(pos=(0,0,0), radius=4, color=color.blue) arrowToOrigin = arrow(pos=(0,2,0), axis=(0,8,0), color=color.green) wire = cylinder(pos=(0,0,0), axis=(20,0,0), radius=1, color=color.yellow) particle.pos=(-5,-5,0) arrowToOrigin.axis=(-10,5,0) wire.radius=3
Useful built-in functions
VPython includes various functions that can make your calculations much easier. The following functions simplify mathematical operations on vectors and will come in handy very often.
Cross-multiply two vectors
cross(vectorA, vectorB)
Magnitude of a vector
mag(vector)
Square of the Magnitude of a vector
mag2(vector)
Unit vector of a vector
norm(vector)
Square Root
sqrt(value)
Absolute Value
abs(value)
VPython Operators
Mathematical Operators
1) # comment out a line
2) + - * / addition, subtraction, multiplication, division
3) ** exponential
4) % modulus or remainder
Logical Operators
1) == outputs true if the compared values are the same
2) != outputs true if the compared values are not the same
3) > or < outputs true if the compared values are greater or less than the other
4) >= or <= Same as above but outputs true if greater or less than or equal to the compared value
Connectedness
I am very interested in programming. I have used Python for years, so translating Physics problems into VPython code is a great way to cement the fundamental ideas in my mind.
VPython is a great tool to bridge the worlds of Computer Science and Physics. Many of the calculations required to model a physical object would be tedious if done by hand. Yet with often a few lines of code, this work can be reduced to almost nothing.
NASA has published VPython models. However, VPython is still primarily used in an educational context.
History
VPython was originally released in 2000 by David Scherer after he took an introductory physics class at Carnegie Mellon University. At the time, the school used the cT programming language for 2D modeling, and David saw the need for something better. Working with several people including professors Ruth Chabay and Bruce Sherwood, he developed a Python module called Visual. Visual Python or VPython featured 3D modeling, as well as an easier-to-understand object-oriented syntax. Beginning in 2002, the National Science Foundation had awarded $292,286.00 as of December 2015 for the further development of this tool. VPython is released under an Open Source license, and development continues today.
See also
If you have never used Python, the VPython Basics wiki page has information for getting started with Python programming.
Further reading
Aiken, John M (2013). Transforming High School Physics With Modeling And Computation. Georgia State University.
External links
You Should Be Coding in Your Physics Course
References
This section contains the the references you used while writing this page