fbpx

Sand Pendulums – Lissajous Patterns in Excel

Share

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Few days ago, I saw a beautiful homemade science experiment on Sand Pendulums on Bruce Yeany’s YouTube channel. Go ahead and check it out. It is a cool project to do with your kids.

I will try this experiment with kids during school term holidays around Easter. But first, I wanted to try the simulation in Excel.

Simulating sand pendulum pattern in Excel

Take a look at the final simulation.

sand-pendulums-excel-demo

Pendulum pattern – Lissajous curve

The patterns generated by sand pendulum are nothing but Lissajous curves. We can generate these curves in Excel by using below equations.

  • X = A * SIN(a*t + d)
  • Y = B * SIN(b*t)

where

  • A & B refer to amplitude (the length pendulum travels before reversing its direction) along X & Y axes
  • a & b refer to height of pendulum along X & Y axes (if these are same you get a simple pendulum and thus a straight line pattern)
  • d refers to degrees of shift (its a bit complex to explain here, but read about phase shift on Lissajous curve Wikipedia page)
  • t refers to radians (degrees).

But this will generate a smooth line, how to show sand?

Simple, after computing each pair of (X, Y) we add a small random noise to them. This creates an impression of sand falling from pendulum on to a surface and bouncing off. Let’s define our new equations as,

  • X = A * SIN(a*t + d) + jx * rand()
  • Y = B * SIN(b*t) + jy *rand()

Where jx & jy are jitter fractions (very small numbers, lest the dots will be too away from original points)

What if the pendulum never stops?

Since we are simulating the movement of a pendulum in Excel, we can choose to have a never stopping pendulum (ie a simple gravity pendulum). In this case A & B values never change.

In real life, A&B will reduce with each oscillation until the pendulum comes to a stop (because there is air drag, friction and other forces at play too).

Let’s look at the chart & VBA

Enough physics & maths. Let’s take a look at the chart & VBA behind this simulation.

  1. Set up 3 columns, one with t values starting from 0 and increasing by 0.05 per cell, next two with X & Y values.
  2. Leave the X&Y values blank. We will use VBA to fill these.
  3. Let’s say we use 5000 (x,y) values to plot the chart. This gives enough variation. You can alter the number of rows later.
  4. Create a scatter plot with smoothed line using these 5000 (x,y) values.
  5. Using VBA, iterate thru column t and calculate X & Y values for each t value using above equations.
  6. Update the chart by using doEvents after every calculations. Try n=25 first and change as you see fit. Updating the chart after every calculation slows down the animation significantly.
  7. Change A, B, a, b, d, jx, jy and air drag factors to generate different curves.

Here is the VBA code used for the animation.



Sub animate()
    Dim xVal As Double, yVal As Double, jx As Single, jy As Single
    Dim t As Range
    Dim a1 As Single, drag As Single
    Dim a2 As Double, b2 As Double, d As Double
    Dim updateScreen As Integer
    Dim tVals As Range
     
    a1 = 1
    drag = Range("air.drag")
    
    a2 = [a.2]
    b2 = [b.2]
    jx = [j.x]
    jy = [j.y]
    
    d = WorksheetFunction.pi() / Range("d")
    
    Set tVals = Range("t.vals")
    
    Range(tVals.Offset(, 1), tVals.Offset(, 2)).ClearContents
    
    Range("done") = "drawing..."
    
    
    For Each t In tVals
        xVal = a1 * Sin(t * a2 + d) + jx * Rnd()
        yVal = a1 * Sin(t * b2) + jy * Rnd()
        
        t.Offset(, 1).Value = xVal
        t.Offset(, 2).Value = yVal

        'update screen after every 25 times this loop has run
        updateScreen = IIf(updateScreen = 25, 0, updateScreen + 1)
        If updateScreen = 0 Then DoEvents
        
        'Reduce A & B values by using drag
        a1 = a1 * (1 - drag)
    Next t

    Range("done") = "done"
End Sub

Download Pendulum Sand Patterns Workbook

Click here to download the Pendulum Sand patterns workbook. Play with the animate & random pattern buttons to see some cool patterns.

 

Have you done this experiment?

This is a cool way to teach kids the awesome pattern power of simple things in life. Have you done this experiment? If not, give it a try. If you think playing with sand is too messy, try the Excel workbook.

Also check out: 3D dancing pendulums post to see some cool & clever animations. Huge collection of spreadsheet tools & simulations for teachers.

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Chandoo is an awesome teacher
5/5

– Jason

Excel formula list - 100+ examples and howto guide for you

100 Excel Formulas List

From simple to complex, there is a formula for every occasion. Check out the list now.

20 Excel Templates

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Weighted average formula in excel

Weighted Average in Excel [Formulas]

Learn how to calculate weighted averages in excel using formulas. In this article we will learn what a weighted average is and how to Excel’s SUMPRODUCT formula to calculate weighted average / weighted mean.

What is weighted average?

Wikipedia defines weighted average as, “The weighted mean is similar to an arithmetic mean …, where instead of each of the data points contributing equally to the final average, some data points contribute more than others.”

Calculating weighted averages in excel is not straight forward as there is no built-in formula. But we can use SUMPRODUCT formula to easily calculate them. Read on to find out how.

Leave a Reply