If you're new to Python
and VPython: Introduction

A VPython tutorial

Introductory Videos

Pictures of 3D objects

What's new

Classic VPython web site
VPython license
Python web site


Math Functions

For versions of Python prior to 3.0, Python performs integer division with truncation, so that 3/4 is 0, not 0.75. This is inconvenient when doing scientific computations, and can lead to hard-to-find bugs in programs. In the GlowScript environment, where VPython code is compiled to JavaScript, 3/4 is always 0.75.

The following math functions are provided:

asin(x)    # arc sine
acos(x)    # arc cosine
atan(x)    # arc tangent; -pi/2 to pi/2
atan2(y,x) # angle whose tangent is y/x; -pi to pi
exp(x)     # e to the x
log(x)     # natural log, base e
# log(x)/log(10) gives log base 10
pow(x,y)   # x to the power y
pi         # 3.14159....
ceil(x)    # round up to nearest integer
floor(x)   # round down to nearest integer
sign(x)    # +1 if x > 0, -1 if x < 0, 0 if x == 0
round(x)   # round to nearest integer
max(x,y,z) # the largest of x,y,z
min(x,y,z) # the smallest of x,y,z
random()   # pseudorandom number 0 to 1
factorial(x)  # x! = x*(x-1)*(x-2)....(1)
combin(x,y)   # x!/(y!*(x-y)!)
max(a,b,c,..) # maximum of these
min(a,b,c,..) # minimum of these

Many of the quantities above are short forms of the JavaScript functions Math.abs(x), Math.sqrt(x), etc. Here are details of the factorial and combin functions.


In general, Python modules cannot be imported into VPython programs, because GlowScript VPython functions in a JavaScript environment. However, one can import the Python "random" module into a VPython program, provided by the RapydScript-NG tool that converts Python to JavaScript. One cannot use the form "from random import *" but must use "import random" or "import random as rr" (or other name) or "from random import randint, uniform" (or other list of functions). Here is documentation of the Python random module. You do not need to import the random module in order to be able to use the random() function described above.


There are functions for converting between degrees and radians, where there are 2*pi radians in 360 degrees:

radians(360)  # equal to 2*pi
degrees(2*pi) # equal to 360


See JavaScript documentation on the Date object which provides methods for determining the current day etc.

Here is a way to determine elapsed time in seconds, with microsecond accuracy, using the clock() function that is also available in the standard Python "time" module. The displayed text is approximately 1.5:

t1 = clock()
t2 = clock()

There is also a function msclock() which gives the time in milliseconds instead of seconds.


You can use LaTeX to display mathematical expressions on the page.