A Sierpinski Triangle is a famous mathematical fractal — a shape made by repeating a pattern inside itself forever.
Start with a triangle ➜ remove the triangle in the middle ➜ repeat the removal process on every remaining triangle forever.
It creates a beautiful, self-similar pattern:
▲
▲ ▲
▲ ▲
▲ ▲ ▲ ▲ | Method | How it works | Pros |
|---|---|---|
| Recursive Draw | Keep dividing triangle into smaller triangles | Clean math, simple to understand |
| Chaos Game | Plot points randomly that converge to fractal | Fast, visually surprising |
<canvas id="canvas" width="600" height="500"></canvas>
<script>
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
function drawTriangle(x1, y1, x2, y2, x3, y3) {
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.lineTo(x3, y3);
ctx.closePath();
ctx.fill();
}
function sierpinski(x1, y1, x2, y2, x3, y3, depth) {
if (depth === 0) {
drawTriangle(x1, y1, x2, y2, x3, y3);
return;
}
let ax = (x1 + x2) / 2;
let ay = (y1 + y2) / 2;
let bx = (x2 + x3) / 2;
let by = (y2 + y3) / 2;
let cx = (x3 + x1) / 2;
let cy = (y3 + y1) / 2;
sierpinski(x1, y1, ax, ay, cx, cy, depth - 1);
sierpinski(ax, ay, x2, y2, bx, by, depth - 1);
sierpinski(cx, cy, bx, by, x3, y3, depth - 1);
}
// Starter triangle
ctx.fillStyle = "black";
sierpinski(300, 20, 50, 480, 550, 480, 6);
</script>
Try changing the last number (6) → recursion depth
Higher depth = more detail but slower.
const c = document.getElementById("canvas");
const ctx = c.getContext("2d");
const vertices = [
{x:300, y:20},
{x:50, y:480},
{x:550, y:480}
];
let x = 300, y = 200;
function chaosGame() {
for (let i = 0; i < 5000; i++) {
const v = vertices[Math.floor(Math.random()*3)];
x = (x + v.x) / 2;
y = (y + v.y) / 2;
ctx.fillRect(x, y, 1, 1);
}
}
setInterval(chaosGame, 10);
| Concept | Meaning |
|---|---|
| Fractal | Infinite repeating shape |
| Self-similar | Parts look like whole |
| Sierpinski triangle | Subdivide triangle forever |
| JS implementation | Recursion or Chaos Game |
Latest tech news and coding tips.
What is Steam Locomotive (sl)? Steam Locomotive (sl) is a small terminal program on Unix/Linux systems…
What is Rate Limiting? Download this article as a PDF on the Codeflare Mobile App…
Learn on the Go. Download the Codeflare Mobile from iOS App Store. 1. What is…
Download the Codeflare iOS app and learn on the Go 1. What UI and UX…
1. Running Everything as Root One of the biggest beginner errors. Many new users log…
A keylogger is a type of surveillance software or hardware that records every keystroke made…