Helix with VPython

VPython (Visual Python) is a 3D graphics library that allows us to create and visualize three-dimensional objects on the screen. It is primarily used to visualize the impact of physics equations on the objects' motion.

Note: Read more about VPython.

Helix

A helix is a three-dimensional curve that resembles a coil. It represents structures like DNA strands, springs, or other coiled objects.

Syntax

The syntax to add a helix is as follows:

helix(radius, length, coils, axis, pos)
Syntax to add a helix

where the parameters are:

  • radius: It defines the radius of the helix's coils.

  • length: This parameter sets the overall length of the helix.

  • coils: As the parameter's name suggests, it sets the number of coils the helix will have.

  • axis: It is a vector object that sets the axis about which the helix displays. For example, if we want to display the helix along the x-axis, we'll put axis=vector(1,0,0).

  • pos: This vector defines the location of the helix object.

Code execution

To execute the code example below, follow the steps mentioned in the slides:

Once you click the "Run" button, follow the encircled link
1 of 4

Code

The following code explains the role of the helix as a spring. A ball is attached to a spring which is undergoing simple harmonic motion.

from vpython import *
import numpy as np

canvas(width=1200, height=600)

support = box(size=vector(0.5, 0.01, 0.5), pos=vector(0, 1, 0))
spring = helix(radius, length=2, coils=30, axis=vector(0, -1, 0), pos=vector(0, 1, 0))
ball = sphere(radius=0.2, color=color.red, pos=vector(0, -1, 0))

while True:
    rate(100)
    for i in np.linspace(2, 3.5, 100000):
        spring.length = i
        ball.pos.y = 1 - i
        ball.pos = vector(0, ball.pos.y, 0)
    for i in np.linspace(3.5, 2, 100000):
        spring.length = i
        ball.pos.y = 1 - i
        ball.pos = vector(0, ball.pos.y, 0)
Sample code for a mass attached to a spring undergoing SHM

Code explanation

  • Lines 1–2: Importing the necessary libraries.

  • Line 4: Making a 1200×6001200 \times 600 canvas.

  • Line 6: The box object here acts as a support to which the spring is attached.

  • Lines 7–8: The helix object's is attached to the box. A ball of sphere object is also attached to it at the bottom.

  • Line 10: The loop keeps running until interrupted.

  • Line 11: The rate() specifies the frames per second of the animation.

  • Lines 12–15: Repeatedly updates the position of the spring and the ball when it's moving downwards.

  • Lines 16–19: Repeatedly updates the position of the spring and the ball when it's moving upwards.

Continue reading

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved