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.



Hi, I have a strong interest in learning web design and improving my creative and technical skills. I recently completed a Web Designing Training in Chennai at FITA Academy, which gave me a solid understanding of UI/UX design, layouts, and responsive development, along with practical project experience. It was a valuable learning journey, and I enjoy applying my skills to create visually appealing and user-friendly websites.
Hi, I’m a Data Science professional dedicated to transforming raw data into actionable insights. After completing a Data Science Course in Coimbatore at FITA Academy, I gained practical exposure to data analysis, predictive modeling, and visualization techniques. I enjoy working on challenging problems and creating data-driven solutions that support smarter decision-making.
These bits of information are so informative and easy to grasp. It benefits Salesforce learners, practitioners, and those preparing for Salesforce-focused jobs to get comprehensive knowledge on Salesforce basics and applications, advanced technological understanding, CRM, automation and development practices, including recent developments in AI. As well as the information helps candidates to improve the knowledge from FITA Academy's Salesforce Learning Platform which include 1445 Salesforce Training lessons, Salesforce Training in Bangalore course with real-time examples. Thank you for all this wonderful and necessary information.
Hi, I’m a Digital Marketing professional with a strong interest in online branding and strategy. I completed a Digital Marketing Course in Madurai , where I gained practical knowledge in content marketing, email marketing, and web analytics. I enjoy helping businesses strengthen their online presence through effective digital marketing strategies.
Travelers can use AirlinesHeadquarters.com to identify information they may need before contacting the airline directly. Topics such as baggage, check-in, reservations, airport services, and customer assistance can all be important parts of travel preparation. However, users should verify current policies and schedules with the respective airline because travel information can change.