Applied Math for Creative Coders
  1. Math Models for Creative Coders
  2. Geometry
  3. Kolams and Lusona
  • Math Models for Creative Coders
    • Maths Basics
      • Vectors
      • Matrix Algebra Whirlwind Tour
      • Things at Right Angles
      • content/courses/MathModelsDesign/Modules/05-Maths/70-MultiDimensionGeometry/index.qmd
    • Tech
      • Tools and Installation
      • Adding Libraries to p5.js
      • Using Constructor Objects in p5.js
      • The Open Sound Protocol
    • Geometry
      • Circles
      • Complex Numbers
      • Fractals
      • Affine Transformation Fractals
      • L-Systems
      • Kolams and Lusona
    • Media
      • Fourier Series
      • Additive Sound Synthesis
      • Making Noise Predictably
      • The Karplus-Strong Guitar Algorithm
    • AI
      • Working with Neural Nets
      • The Perceptron
      • The Multilayer Perceptron
      • MLPs and Backpropagation
      • Gradient Descent
    • Projects
      • Projects

On this page

  • Inspiration
  • Introduction
  • Inspiration
  • Creating Kolams
  • By Hand!
    • Method #1: Using Canonical Pieces
    • Method #2: Using Mirrors and Light
  • Kolams with Code
  • Wait, But Why?
  • References
  1. Math Models for Creative Coders
  2. Geometry
  3. Kolams and Lusona

Kolams and Lusona

Kolam
Sona
Networks
Nodes and Edges
Eulerian path
Hamiltonian Path
Published

May 2, 2024

Modified

July 19, 2025

Inspiration

Look at this fabric map of Africa:

Figure 1: Africa Fabric Map: What’s your next T-Shirt?

And look at this map of Nobel prize winners!

Figure 2: Network of Nobel Prize Winners

Would there be anything in common between these two 😮 ??!! How???!!!

Introduction

The South Indian tradition of Kolam, and the Angolan tradition of Lusona art have quite a few things in common. Both are also strongly linked to finite grammars and networks.

Inspiration

Click to generate a fresh Kolam!

Creating Kolams

How do we create these Kolam Patterns? Let us do this two ways: first pretending we are a South-Indian Woman adorning her doorstep in the morning. And then with two other methods, that lend themselves to computation / iteration. So, first by hand!

By Hand!

See if you can manually mimic some of the moves here! As an exercise, try to anchor your elbow and forearm to the table, and draw the pattern by rotating the paper! What are your observations?

Method #1: Using Canonical Pieces

What does canonical piece mean? These are pieces like the alphabet: pieces that can be repeatedly used to create a vast variety of patterns? Sounds familiar again?

Check the Polypad: https://polypad.amplify.com/p#patterns

Here we use “pieces of Kolam” that are standard: by repeated usage of combinations of these pieces, ( I believe ) any kolam can be produced. Here is a video showing kolams with a few canonical pieces:

Which are the canonical pieces here?

This is also the idea embedded in this toy called Kolam Tiles. See this YT Playlist on Kolam Tiles.

Method #2: Using Mirrors and Light

This follows the development of Paul Gerdes.

First let us get a printable grid to make our Kolams manually, since making grids can become tedious when you are making a lot of Kolams. We can use the grid to place “pulli-s” on the grid to make our Kolam. Head off to: https://editor.p5js.org/arvindv/sketches/UuHApkvqd and open it in your p5.js web-editor. Print out a few samples of the .svg grid file that is generated.

Now consider that each of your Kolam “lines” or “trajectories” is made of light. And place some single horizontal or vertical mirrors, at some locations midway between adjacent pulli-s. See the figure below:

Figure 3: Kolam with Mirrors

The black lines here are to be imagined as “made of light”. Whenever they hit a mirror, a “curved reflection” occurs. Note how the arrangement of mirrors is symmetric here. Can we take computational liberties here and make asymmetric mirror arrangements? Can the grid also be non-square? Try?

For more inspiration, see here. This is a multipage article with many different grid+mirror arrangements! There is also an intriguing technique shown therein of colouring the squares in the grid alternatively white and black, to generate very symmetric shaded patterns!

Kolams with Code

Work in (slow….) Progress!!!

  • Using p5.js
  • Using R

<iframe width=“780px” height=“600px”

Wait, But Why?

Kolams and Sona are powerful metaphors for graphs and networks. These ideas show up in a variety of situations, such as tranportation networks, supply-chain, friendship networks, tracing literary and artistic influence, and so on.

References

  1. Some kolam like patterns for inspiration. https://www.pinterest.com/gbenainous/p5js-teaching-ideas/
  2. Dr. Gift Siromoney’s webpage. https://www.cmi.ac.in/gift/Kolam.htm
  3. Mirror Designs and Mirror Curves: Comparing Kolam and Tchokwe Art. https://www.mi.sanu.ac.rs/vismath/paulus/pg1.htm
  4. YANAGISAWA, Kiwamu & Nagata, Shojiro. (2007). Fundamental Study on Design System of Kolam Pattern.https://www.researchgate.net/publication/237442288_Fundamental_Study_on_Design_System_of_Kolam_Pattern)
  5. Paulus Gerdes. Lunda Geometry: Mirror Curves, Designs, Knots, Polyominoes, Patterns, Symmetries. https://www.sahistory.org.za/sites/default/files/archive-files3/paulus_gerdes_lunda_geometry_mirror_curves_desbook4you.pdf
  6. Visual Mathematics. Mathematical Institute of the Serbian Academy of Sciences and Arts. Editor: Ljiljana Radovic. ISSN: 1821-1437. https://www.mi.sanu.ac.rs/vismath/
  7. Imaginary.Org. Frozen Light App. https://www.imaginary.org/program/frozenlight
  8. https://kolamtiles.com
  9. Anu Reddy and Alex McLean.(March 2024). Drawing Kolam Patterns in Stitches and Code. https://alpaca.pubpub.org/pub/eljjyi80/release/6
  10. https://algorithmicpattern.org
  11. Ascher, M. (2002). The Kolam Tradition: A tradition of figure-drawing in southern India expresses mathematical ideas and has attracted the attention of computer science. American Scientist, 90(1), 56+. https://link.gale.com/apps/doc/A81528419/AONE?u=anon\~274c1208&sid=googleScholar&xid=4105e718
Back to top
L-Systems
Media

License: CC BY-SA 2.0

Website made with ❤️ and Quarto, by Arvind V.

Hosted by Netlify .