tied up, tied down, let loose, unwound
square, infinite resolution
generative artwork
2023
→ View a live demo
Description
From the moment we're born, we're met with a knot. The tying of the umbilical cord delineates us from our mother as the first act of separation. We carry this knot with us for the rest of our lives, hidden from view—a reminder of our biological origins and our staunch independence.
Knots permeate our lives and our social fabric. We use them to describe our relationships, our social duties and emotional availability, from “tying the knot” to “getting tangled up” to “letting loose.” Inherent to the Knot is the power to bring things together and the power to isolate.
Functionally, a knot is a substance whose shape both restricts it unto itself and enables it to link up with others. The string or cord thus achieves newfound utility, but only by losing its total freedom. This tension between ability and utility, reliance and freedom, form and function, is at the core of the enigmatic Knot.
For, what keeps a knot from unraveling, but itself? A knot can't be set free without losing its shape—its identity. Like us, they hold themselves together, bound by overlapping contradictions and codependencies. Our identities are inextricably intertwined with our inner knots: tied up, tied down, let loose, unwound.
Here, each knot represents the intertwinedness of our life with others, and at the same time, the complexity of our own self and the conflicts of its many parts. Within us are the defining counterpoints that hold us together, that challenge us to grow and find and defend our voice.
Process
Every knot is physically-plausible, made with at least one continuous cord woven under, over, under and over again. They’re styled with a hyper-minimalist palette, texture and perceptual cues to create visual breathing space for the simple linework that defines the humble knot.
Procedurally, a knot begins with two connected loops 🔗. For a random number of times, two neighboring edges are crossed 🧬, yielding a new crossing each time. The choice of edges is determined by the construction method, which can favor creating more twists or more links. Once the network is built, the number of loops can be inferred ⭕⭕, as well as its symmetry: 🌱2-fold, ☘ 3-fold, 🍀4-fold, or sometimes more.
An initial layout of its nodes and edges is generated, seeding a physics engine that tightens and flattens the knot, treating it like an elastic ribbon 🎀. Two identical knots, after being flattened, may look different. These “sibling” knots have the same structure 🌝, but are seen from different views 🌛🌜. Sibling knots can be identified as having the same isomorphic key. Two knots can also look similar, but have a different handedness 🫲🫱.
The knot is visualized with a consistent cord thickness. The largest loop is the primary cord. It’s always black and sometimes multi-threaded ▥. Other cords are always colorful 🌈, drawing from the secondary and tertiary colors. 🪢
(Bolded words refer to features—properties of each output that characterize it).
Background
This is a "long-form" generative artwork, developed in JavaScript using three.js. In other words, the artwork is an algorithm that generates a new, unique image each time it's run. The images here aren't drawings or paintings; they are imagined and rendered by a complex virtual system I designed after close study of physical knots. Shown here is a curated selection of its potentially infinite outputs. The algorithm, totalling almost 50kB in size, is stored in perpetuity on the Ethereum blockchain.
Notes
Both the algorithm and its outputs are licensed under CC BY-NC 4.0. It is intended to be run on modern devices and browsers (recommended: Chrome, Safari or Firefox).
∿
This project makes use of and borrows from the following resources: ArtBlocks' Random class, n choose k function, point in polygon function, line segment intersection function.