Bouncing ball with energy loss

Open in new tab 🔗

This simulation offers a clear and interactive way to explore the motion of a ball bouncing on the ground, highlighting how displacement, velocity, and acceleration change over time. On the left, you’ll see the animation of the ball with vectors showing its position (green), velocity (pink), and acceleration (blue). The sliders at the top allow you to adjust the starting height, the percentage of energy lost on each bounce, and whether air resistance is included. You can pause, reset, or let the motion run continuously, while the time slider doubles as a scrubber when the simulation is paused.

On the right, the three graphs display how each physical quantity varies with time. The position–time graph shows the ball’s vertical displacement, always measured relative to the lowest point of its center of mass. The velocity–time graph alternates between negative and positive values, reflecting the downward and upward motion during each bounce, while the acceleration–time graph remains mostly constant at –g, with spikes at the moment of collision. Together, the animation and graphs help link the visual motion with the quantitative data, reinforcing the relationships between these variables.

The underlying theory follows Newton’s laws of motion. The ball accelerates downwards under gravity until it collides with the ground, where it loses some energy depending on the restitution factor. This is why the bounce height diminishes over time. The velocity vector shows not only the speed but also the direction of motion, while the acceleration vector indicates that gravity always acts downward, regardless of whether the ball is rising or falling. By adjusting energy loss during each collision and air resistance, you can model more realistic scenarios and see how dissipative forces affect motion, making this a powerful tool to visualize the physics of bouncing objects.

Dropping with air resistance

Open in new tab 🔗

This simulation lets you watch two equal-size spheres (light and heavy) fall, while you see their free-body diagrams (FBDs) and a velocity–time graph update in real time.

Press Start to run and Pause to discuss a moment in time. Reset restarts from rest. Use Zoom to read the force vectors clearly. Toggle Air Resistance to compare an idealised fall (no drag) with a more realistic one (drag on). The small info panel shows the current speeds and, when drag is on, each sphere’s terminal velocity.

What to look for

  • Without air resistance: Each FBD shows only weight downward. Acceleration is constant at ggg, so the velocity–time graph is a straight line from the origin for both spheres (same slope, because mass doesn’t matter when no drag acts).
  • With air resistance: A drag arrow appears upward and grows with speed. The heavy sphere’s velocity rises faster at first (its weight is larger), but both curves flatten as drag increases, and the acceleration vector shrinks toward zero. Dotted segments indicate when the two curves overlap closely.

Theory in one breath

In air, we model drag as proportional to speed: $F_\text{drag}=kv$

Net force is $ma=mg−kv \quad\Rightarrow a=g−\dfrac{k}{m}v$

As v grows, the term $\dfrac{k}{m}v$ eats into $g$, so acceleration falls.

Terminal velocity happens when forces balance: $mg=kv$​, so $v_t=\dfrac{mg}{k}$

Heavier mass ⇒ larger $v_t$​. That’s why the heavy sphere ultimately settles at a higher speed and takes longer to level off. With drag off, the model is simply $a=g$ and $v=gt$.

How to teach with it (fast)

  1. Start with Air Resistance off: Pause after a second—ask why both lines match and why only weight appears on the FBDs.
  2. Turn Air Resistance on: Run, then pause midway. What changed in the FBDs? Why is acceleration smaller now?
  3. Let it run until the acceleration vectors nearly vanish: connect “flat graph” with “balanced forces,” then read off different terminal velocities.

That’s it: start, pause, notice which vector changed, and link the picture to the equation.

3D view of forces on parallel currents using GeoGebra

Open in new tab 🔗

The simulation serves to show how the magnetic field of one current-carrying wire exerts a force on another current-carrying wire.

When two wires are placed parallel to each other and carry electric currents, each wire produces its own magnetic field. The magnetic field around a straight current-carrying conductor forms concentric circles, and the direction of these circles can be determined by the right-hand grip rule: if you point your thumb along the direction of the current, your curled fingers show the direction of the magnetic field lines.

Because of this, one wire is always sitting inside the magnetic field created by the other. The moving charges in the second wire—that is, the current—interact with this magnetic field and experience a force. The strength of the force depends on the current in both wires and the distance between them, while the direction of the force can be worked out using Fleming’s left-hand rule or simply by considering how the two fields interact.

Magnetic field patterns between two parallel currents interact in such a way as to form either an attraction (for currents in same direction) or a repulsion (for opposite currents)

If the currents in the two wires flow in the same direction, the magnetic fields between the wires reinforce each other, producing a stronger field outside the pair and a weaker field between them. This imbalance pulls the wires towards each other, so they attract. On the other hand, if the currents run in opposite directions, the magnetic fields between the wires reinforce instead, while the fields outside are weakened. The result is a pushing apart of the two wires, so they repel each other.

In short, the force on parallel wires arises because each wire generates a magnetic field that acts on the current in the other. Identifying the force is straightforward once you know the directions of the currents: currents in the same direction cause attraction, while currents in opposite directions cause repulsion.

Displacement-distance graph and displacement-time graph of a wave

Open in new tab 🔗

Click here for full view.

Exploring Wave Properties Through Interactive Simulations

One of the most powerful ways to learn about waves is not just by reading definitions, but by seeing them in action. This simulation allows you to adjust amplitude, frequency, wavelength, and speed and watch how the wave’s behavior changes over time and space.

By the end of this activity, you should be able to:

  1. Define and use the terms speed, frequency, wavelength, period, and amplitude, and connect them to what you see on the graphs.
  2. Recall and apply the relationship $v = f \lambda$ to new situations and solve related problems.

How to Interact With the Simulation

Two Graphs, Two Perspectives

  • The top graph (Displacement vs Distance) shows the shape of the wave along space at a single instant.
  • The bottom graph (Displacement vs Time) shows how a single particle moves up and down as time passes.

Controls

  • Use the sliders to change Amplitude, Frequency, Wave Speed, and Wavelength.
  • Press Start Animation to see the wave move. Press it again to stop.
  • Press Reset to return to default values.

What happens when you


  • Increase Amplitude → The wave gets taller, but the speed and wavelength stay the same.
  • Increase Frequency → More oscillations appear in the same time, and the particle on the time graph moves faster up and down.
  • Change Wavelength → The distance between crests and troughs changes on the distance graph.
  • Change Speed → The wave travels faster across the distance graph.

Use these questions as you experiment with the sliders:

Amplitude

  • How does increasing amplitude affect the wave’s appearance on both graphs?
  • Does amplitude change the wave speed?

Frequency and Period

  • Observe the bottom graph: How many oscillations occur in one second when frequency is 1 Hz? What is the period (time for one cycle)?
  • What happens to the period when you double the frequency?

Wavelength

  • On the top graph, how do the positions of the crests and troughs change as you adjust the wavelength slider?
  • Can you measure one wavelength directly from the graph?

Wave Speed Relationship

  • Try setting frequency = 2 Hz and wavelength = 150 mm. What is the predicted wave speed using $v = f \lambda$
  • Now observe the simulation: Does the wave move across the distance graph at that speed?
  • Repeat for another set of values (e.g. f=0.5 Hz, λ=300 mm). Does the relationship still hold?

Connecting Both Graphs

  • Watch the red dot on the distance graph (a fixed point on the medium). How does its motion compare with the displacement–time graph?
  • Why does the red dot’s vertical motion look like a sine wave over time?

Simulation on Radioactive Decay using Dice

A simulation based on the casting of dice can be used to demonstrate the concept of half-life. Imagine a certain number of dice being cast together. All the dice that show a six are removed from the population. The remainder are cast again repeatedly, and each time, those that show a six are removed.

The question posed to students is : around which cast will the number of dice be reduced to half the original?

Here is the simulation:

Open in new tab 🔗

Lens Ray Diagram Simulation

I initially wanted to modify my GeoGebra applet on the converging lens ray diagram to include the case for infinitely far objects but thought I should give Claude.ai a try to generate one using javascript. It went very smooth. I merely took a screenshot of the original GeoGebra applet for reference, and used the following prompts: “Refer to this geogebra applet and make a html5 version. The user can change the focal length, the lens position and object height using mouse clicks or touchscreen drags. Keep the size responsive. Keep the buttons as overlays.” There were a few iterations after that but the first iteration was already good enough as a minimum-viable product.

This is the screenshot of the original applet that was used as reference by Claude.ai.

This is the end product:

Open in new tab 🔗

Access the full version here.