Application Center - Maplesoft

App Preview:

Animation of a cycloid

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application



Animation of a Cycloid

by Jason Schattman, Waterloo Maple, Inc.

October, 2000

A cycloid is the path followed by a point on a disk that rolls on a flat surface at uniform speed. We derive the parametric formula for the cycloid and produce an animation of the system.

> restart; with(plots): with(plottools):

Warning, the name changecoords has been redefined

Derivation of the parametric cycloid formula

Assume the disk rolls along the x -axis to the right, starting from the origin. Consider the point p at the top of the circle in its initial position. The goal is to find the parametric formula for the path p as the disk rolls, given the disk's radius r and angular velocity omega (in radians per second).

The motion of point p may be decomposed into translation and rotation. The translation of point p is equal to the translation of the center of the disk. To derive the latter, note that the number of revolutions as a function of time t is

> revolutions := omega * t / (2 * Pi);

revolutions := 1/2*omega*t/Pi

Then the horizontal translation of the center at time t is the number of revolutions times the perimeter of the circle, 2*Pi*r , and the vertical translation is 0 :

> translation := [2 * Pi * r * revolutions, 0];

translation := [r*omega*t, 0]

Now we derive the motion of p due to rotation. Because the disk rolls to the right, and the starting point is the top of the disk, we measure the angle of rotation omega*t with respect to the y -axis. Then the rotation is given by

> rotation := [r * sin(omega * t), r * cos(omega * t)];

rotation := [r*sin(omega*t), r*cos(omega*t)]

The cycloid motion of p is the vector sum of its translation and rotation, offset vertically by the radius r , so that the disk rolls on top of the x -axis.

> cycloid := translation + rotation + [0, r];

cycloid := [r*sin(omega*t)+r*omega*t, r+r*cos(omega...

Animation of a cycloid

This animation contains three layers:

- Tracing of the cycloid

- A circle moving to the right to show the translation of the disk

- A chord through the center of the circle that rotates with angular velocity omega and translates with the circle, to create the impression that the circle is rotating.

We build each layer separately, using Maple's built-in functions animatecurve() for the cycloid, and animate() for the circle and chord. We then combine the layers and show the resulting animation using Maple's display() function.

We first specify the constants and give the time the disk will roll.

> omega := 1; r:= 1; rollTime := 4 * Pi;

omega := 1

r := 1

rollTime := 4*Pi

Layer 1: Tracing of the cycloid

> cycloidTrace := animatecurve([cycloid[1], cycloid[2], t = 0..rollTime],
view = [0..r * omega * rollTime, 0..4*r],
scaling = constrained, color = black,
frames = 100, thickness=2):


[Maple Plot]

Layer 2: The circle , drawn parametrically in each frame with respect to parameter s , and translated to the right in each frame using the vector translation derived above.

> disk:=animate([translation[1] + r * cos(s), r + r * sin(s), s = 0..2 * Pi],
t = 0..rollTime, scaling = constrained, frames = 100,
view = [0..r * omega * rollTime, 0..4*r], thickness=2):


[Maple Plot]

Layer 3: The chord through the center , drawn parametrically in each frame with respect to parameter s . The chord must both translate and rotate, so we make use of the vectors translation and rotation . Note that the tip of the chord, which corresponds to the parameter value s = r , follows the cycloid.

> chord:=animate([translation[1] + (s/r) * rotation[1], (s/r) * rotation[2] + r, s = -r..r],
t = 0..rollTime, scaling = constrained, color = blue, frames = 100,
view = [0..r * omega * rollTime, 0..4*r], thickness=2):


[Maple Plot]

The final result

> display( [cycloidTrace, disk, chord], axes=none );

[Maple Plot]