Simple 3D Programming
Using VPython

I. VPython: the Python/ Visual /
VIDLE environment

The interactive development environment you will use is called "VIDLE."

The Display window

When using VPython the display window shows objects in 3D.

(0,0,0) is in the center of the display window . The +x axis runs to the right, the +y axis runs up, and the +z axis points out of the screen, toward you.

x, y, and z are measured in whatever units you choose;
the display is automatically scaled appropriately. (You could, for example,
create a sphere with a radius of 1E-15 m to represent a nucleus, or a sphere
with a radius of 1E6 m to represent a planet, though it wouldn't make sense
to put both of these objects in the same display!)

The Output window

The output of any -print- statements you execute in your program goes to the Output window, which is a scrolling text window. You can use this window to print values of variables, print lists, print messages, etc. Place it where you can see messages in it.

The Code window

If you type or copy the following simple program into the code
window in VIDLE and run it (press F5, or use the Run menu), you will see
a display like the one shown in the figure.

Visual is the name of the 3D graphics module used with
the Python programming language. VPython is the name of the combination
of the Python programming language, the Visual module, and the development
environment VIDLE.

Viewing the scene

In the display window, click and drag with the right mouse
button (hold down the command key on a Macintosh). Drag left or right, and
you rotate around the scene. To rotate around a horizontal axis, drag up
or down. Click and drag up or down with the
middle mouse button to move closer to the scene or farther away (on a 2-button
mouse, hold down the left and right buttons; on a 1-button mouse, hold down
the Option key).

II. VPython Entities

Objects, names, and attributes

The graphical objects you create, such as spheres, boxes,
and curves, continue to exist for the duration of your program, and the
VPython 3D graphics module will continue to display them, wherever they are.
You must give each object a name (such as redbox or ball in the example above) if you
wish to refer to it again later in your program. All objects have attributes:
properties like ball.pos (the position
of the sphere), ball.color, and radius or other size parameter. If you change an attribute of an object, such as
its position or color, VPython will automatically display the object in its
new location, or with its new color.

You can set the values of attributes in the "constructor" (the code used to create the object), and you can also modify attributes later:

ball.radius = 2.2

In addition to the built-in set of attributes, you may
create new attributes. For example, you might create a sphere named moon;
in addition to its radius and location, you might give it attributes such
as mass (moon.mass) and momentum (moon.momentum).

Vectors

Not all objects in VPython are visible objects. For example,
VPython allows you to create 3D vector quantities, and to perform vector
operations on them. If you create a vector quantity called a,
you may refer to its components as a.x, a.y, and a.z. To add two vectors, a and b, however, you do not need to add the
components one by one; VPython will do the vector addition for you:

a = vector(1,2,3)
b = vector(4,5,6)
c=a+b

If you print c , you will find that
it is a vector with components (5, 7, 9.).

Scalar multiplication

d = 3*a # d is a vector with components (3, 6, 9)

Vector magnitude

s = mag(c) # s is a scalar
z = mag(c)**2 # you can square the magnitude of a vector

Basic VPython objects such as sphere() and box() have
a set
of "attributes" such as color, and you can define additional attributes
such
as mass or velocity. Other objects, such as vector(), have built-in
attributes
but you cannot create additional attributes.

Warning about division

If you are using a version of Python prior to Python 3.0, division of integers will not come out the way you may expect, since the result is rounded down to the nearest integer. Thus:

a = 3/4
print(a) # a is 0

To avoid this, you can place a decimal point after every number, like
this:

b = 3./4.
print(b) # b is 0.75, as expected

We recommend putting the following statement as the
first line of your program, in which case 3/4 will be 0.75; there
are two underscores before the word "future" and two after the word "future"; also, it will display print statements properly on all versions of Python:

from __future__ import division, print_function

This is not necessary for Python versions starting with 3.0, which ignore this statement.

Exponentiation

x**2 # Not x^2, which is a bit operation in Python

Logical Tests

If, elif ("else if"), else:

if a == b: # see table of logical expressions below
c = 3.5 # indented code executed if test is true
elif a < b:
c = 0 # c will be set to zero only if a < b
else:
c = -23.2

Logical expressions

==

equal

!=

not equal

<

less than

>

greater than

<=

less than or equal

>=

greater or equal

or

logical or

and

logical and

in

member of a sequence

not in

not sequence member

Lists

A list is an ordered sequence of any kind of object. It is delimited by square brackets.

moons = [Io, Europa, Ganymede, Callisto]

The function "arange" (short for "arrayrange")
creates an array of numbers:

if a == b: continue # go back to the start of the loop
if a > b: break # exit the loop

Printing results

To print a number, a vector, a list, or anything else,
use the "print" option:

print(Europa.momentum)

To print a text message, enclose it in quotes:

print("We crashed on the Moon with speed", v, "m/s.")

Python also offers a formatted print capability. Here
price will be printed with 3 digits before the decimal place and 2
digits after, and num will be printed as an integer:

print("It's $%3.2f dollars for %d copies" %
(price,num))

More Information about Python

We have summarized a small but important subset of the Python programming
language. Extensive Python documentation is provided
on the Help menu in VIDLE, and there is additional information at the Python
website, but much of this information assumes that you already
have
lots of programming experience in other languages. We recommend the
following
book to those who want to learn more about Python, and about programming
in general: Python Programming: An Introduction to Computer Science by
John M. Zelle (Franklin Beedle & Associates, 2003).