---
title: "Kolams and Lusona"
subtitle: ""
subject: "Shapes and Code"
abstract: ""
date: 02/May/2024
date-modified: today
order: 60
categories:
- Kolam
- Sona
- Networks
- Nodes and Edges
- Eulerian path
- Hamiltonian Path
image: ""
lightbox: true
bibliography: references.bib
---

```{r}
#| label: setup
#| echo: false
# install.packages("devtools")
# devtools::install_github("hadley/emo")
library(emo)

```


## Inspiration

Look at this fabric map of Africa: 
<center>
![Africa Fabric Map: What's your next T-Shirt?](../../../../../materials/images/Africa-Fabric-Map.jpeg){#fig-africa-textile}
</center>


And look at this map of Nobel prize winners!

![Network of Nobel Prize Winners](../../../../../materials/images/NobelPrizeNetwork.png){#fig-nobel-winners}

Would there be anything in common between these two `r emo::ji("open_mouth")` ??!! How???!!!

## Introduction

The South Indian tradition of Kolam, and the [Angolan tradition of Lusona](https://www.sahistory.org.za/sites/default/files/archive-files3/paulus_gerdes_lunda_geometry_mirror_curves_desbook4you.pdf) art have quite a few things in common. Both are also strongly linked to finite grammars and networks.

## {{< iconify icons8 idea >}} Inspiration

<center>
<iframe src="https://openprocessing.org/sketch/296103/embed/" width="780" height="780">
</iframe><br>
Click to generate a fresh Kolam!
</center>




## 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?

::: {layout-ncol=3}

![](../../../../../materials/gifs/3-3a.gif)


![](../../../../../materials/gifs/3-3b.gif)



![](../../../../../materials/gifs/3-3c.gif)


:::
::: {layout-ncol=3}


![](../../../../../materials/gifs/3-3d.gif)

![](../../../../../materials/gifs/3-3e.gif)


![](../../../../../materials/gifs/3-3f.gif)

:::
::: {layout-ncol=3}

![](../../../../../materials/gifs/3-3g.gif)

![](../../../../../materials/gifs/3-3h.gif)

![](../../../../../materials/gifs/3-3i.gif)

:::



### 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**:

:::{}
<center>
{{< video https://youtu.be/-l9za7UlzKM width=500 height=360 >}}
Using "Canonical Pieces" by Saty Raghavachary
</center>
:::

Which are the canonical pieces here?

This is also the idea embedded in this toy called [Kolam
Tiles](https://kolamtiles.com/). See this [YT Playlist on Kolam Tiles](https://youtube.com/playlist?list=PL6LYOn0Nvs_spbp4kYo2llyTmwPbFdEUf&si=ThsBwebTaEYInKNr).

::: {layout-ncol=2}

![](../../../../../materials/gifs/kolam3_howto.gif)

![](../../../../../materials/gifs/kolam4_howto.gif)

:::

::: {layout-ncol=2}

![](../../../../../materials/gifs/kolam6_howto.gif)

![](../../../../../materials/gifs/kolam7_howto.gif)

:::

::: {layout-ncol=2}

![](../../../../../materials/gifs/kolam9_howto.gif)

![](../../../../../materials/gifs/kolam10_howto.gif)

:::

This very accessible paper by Nagata and Thamburaj illustrates this concept and may help in recreating this idea digitally, in `p5.js`!

{{< pdf ../../../../../materials/pdfs/Kolam/Nagata-Thamburaj-DigitalizationKolamPatterns.pdf >}}

### Method #2: Using Mirrors and Light

This follows the development of [Paul
Gerdes](https://www.mi.sanu.ac.rs/vismath/paulus/index.html). 

{{< html https://www.mi.sanu.ac.rs/vismath/paulus/pg1.htm width=780 >}}

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](https://www.imaginary.org/program/frozenlight). And place some
single horizontal or vertical mirrors, at some locations *midway between
adjacent pulli-s*. See the figure below:

![Kolam with Mirrors](../../../../../materials/gifs/Kolam-With-Mirrors.png){#fig-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?


## The Mathematics of Kolam

We will follow the *Lunda Geometry* treatment of Gerdes here, and also briefly( Ha! Briefly!!) touch upon the S. Jablan's treatment based on *Knot Theory*. 

TBWU. 

 - Combine Karnaugh Maps, Network Adjacency Matrics, Cayley Symmetry Matrices, and Paulus Gerdus' Modulo-m Lunda matrices into a unified "Kolam Symmetry Matrix". 
 - Discuss the similarity to Wang tiles.
 
 Questions:
 - Can we generate random KSMs and find "symmetry on average", in the manner of Field and Golubitsky?
 - Can we mimic Kolam Tiles / Saty Raghavachary's video in code?
 - How "simple" can the code be?
 
 
### Basics of Lunda Geometry and Kolam

For more inspiration, see
[here](https://www.mi.sanu.ac.rs/vismath/paulus/pg1.htm). 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 and Knot Theory
S. Jablan's treatment based on *Knot Theory*

## Kolams with Code

Work in (slow....) Progress!!!

::: {.panel-tabset .nav-pills style="background: whitesmoke;"}



### Using p5.js

<center>
<iframe width="780px" height="600px" 

</iframe>
</center>


### Using R

:::


## {{< iconify mingcute thought-line >}} Wait, But Why?

Kolams and Sona are powerful metaphors for [graphs and networks](../../../../Analytics/Descriptive/Modules/100-Networks/index.qmd). 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. 

## {{< iconify ooui references-ltr >}} References

1. Syamala Chenulu. *Teaching Mathematics through the ART OF KOLAM*
1.  Mirror Designs and Mirror Curves: Comparing Kolam and Tchokwe Art. <https://www.mi.sanu.ac.rs/vismath/paulus/pg1.htm>
1.  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>
1. Paulus Gerdes. *Lunda Geometry: Mirror Curves, Designs, Knots, Polyominoes, Patterns, Symmetries*.
{{< pdf ../../../../../materials/pdfs/Kolam/lunda_geometry.pdf >}}
1. 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/>
1.  Anu Reddy and Alex McLean.(March 2024). *Drawing Kolam Patterns in Stitches and Code*. <https://alpaca.pubpub.org/pub/eljjyi80/release/6>
1. Labs Without Borders on Medium. (Nov 29, 2020). *Folkloric Graph Theory: The Mathematics of Kolam.* <https://liubauer.medium.com/mathematics-of-kolam-folkloric-graph-theory-4b3acc79d5cb> 


## Additional Reading

1. Symmetry Journal. <https://www.mdpi.com/journal/symmetry> [ Open Access]
1. Some kolam like patterns for inspiration. <https://www.pinterest.com/gbenainous/p5js-teaching-ideas/>
1.  Dr. Gift Siromoney's webpage. <https://www.cmi.ac.in/gift/Kolam.htm>
1.  Imaginary.Org. *Frozen Light App*.
    <https://www.imaginary.org/program/frozenlight>
1.  <https://kolamtiles.com>
1.  <https://algorithmicpattern.org>
1.  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://www.jstor.org/stable/27857597>
