Kinetic Generative Art Tutorial
- Pierre Paslier

- Jun 3, 2023
- 2 min read
Tutorial Intro
Welcome to this tutorial where we're going to explore the mesmerizing world of generative art, inspired by the kinetic sculptures of artists like Reuben Margolin. We'll use p5.js, a powerful JavaScript library that makes coding visual and interactive elements on the web accessible to everyone.
Our goal is to create a digital artwork with a series of rotating pendulums, each varying in speed and size, to simulate the motion seen in kinetic sculptures. The final result is a beautiful, ever-changing pattern that reflects the dynamic essence of kinetic art.
This tutorial is beginner-friendly, so don't worry if you're new to p5.js or programming in general. We'll walk through each line of code step by step, explaining the concepts as we go along.
By the end of this tutorial, not only will you have created a piece of generative art, but you will also have gained a deeper understanding of loops, arrays, and object-oriented programming in p5.js. You'll be equipped with the knowledge to create your own unique generative artworks. So, let's dive in and start coding!
Generative Art Code
let pendulums = [];
let pendulumCount = 40;
function setup() {
createCanvas(windowWidth, windowHeight);
for(let i = 0; i < pendulumCount; i++){
pendulums[i] = new Pendulum(i);
}
}
function draw() {
blendMode(NORMAL);
background(255 );
translate(width / 2, height / 2);
for(let i = 0; i < pendulumCount; i++){
pendulums[i].display();
pendulums[i].update();
}
}
class Pendulum {
constructor(n){
this.angle = 0;
this.angleSpeed = 0.01 + n * 0.004;
this.radius = 30 + n * 6;
}
update() {
this.angle += this.angleSpeed;
}
display(){
let x = this.radius * cos(this.angle);
let y = this.radius * sin(this.angle);
stroke(0,100);
line(0, 0, x, y);
fill(0);
ellipse(x, y, 5, 5);
}
}That's it! Hope you've enjoyed learning about this particular piece and make sure to check out the other free tutorials on generativehut.com.



This is such an excellent and accessible introduction to p5.js! I love how you broke down the math behind the rotating pendulums—it perfectly captures that mesmerizing, rhythmic movement seen in real-life kinetic sculptures. It got me thinking about how algorithmic loops and arrays can be applied to optimize real-world systems, too. Whether you're scripting the rotational speeds of digital art or programming the power distribution grid for a commercial ev charger network, understanding object-oriented programming and logic structures is so valuable. Thanks for sharing the code, I can't wait to play around with the pendulumCount and angleSpeed variables!
The blog’s section on real-time patient data is very informative. It highlights key challenges in RPM. We also offer patient monitoring software development services in Riyadh. Excited to see more insights like this.
The right Content Writing Services can bring you a personality that you will enjoy and respect by the shopper. Rather than reasonable general expressions everybody uses, one can find a personal voice that a person converses with a friend. That imprints in the mind of the visitor and makes him/her more inclined to visit again when the project owner is ready to make purchases. The quickest way of addressing a curious browser into becoming a loyal follower is by building that bond.
Meeting how to work out percentage profit requirements prepares learners to evaluate profitability accurately. The College of Contract Management offers flexible courses suitable for busy schedules. The course emphasizes real-world applications to strengthen financial skills. Many have benefitted by confidently managing budgets and pricing strategies.
Air France Lost and Found provides passengers with an easy way to recover misplaced items during travel. If you lose belongings on board or at the airport, you can file a report online through the Air France Lost and Found service. Official documents are held for seven days before being sent to authorities, while other items can be claimed by submitting a declaration and following instructions to retrieve them.