top of page

Kinetic Generative Art Tutorial

  • Writer: Pierre Paslier
    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.


805 Comments


melaniemarshall6592
15 hours ago

https://tg88.miami/ hôm qua mình lướt thử vì thấy mấy ông bạn nói nhiều, chủ yếu tò mò xem trang họ làm kiểu gì thôi. Vào cái là thấy bố cục chia khối khá rõ, đọc lướt cũng hiểu đang nói về thương hiệu với mấy thông tin kiểu link truy cập an toàn cập nhật theo năm. Mình thích mấy cái tiêu đề to, nổi bật nên kéo xuống không bị rối mắt, kiểu mỗi đoạn đều có heading dẫn đường. Nội dung giới thiệu cũng viết gọn gàng, có nhắc họ hoạt động từ 2012 và thuộc một liên minh giải trí (đọc cho biết vậy chứ mình không đào sâu). Nói chung cảm giác trang này ưu tiên…

Like

billy24barne.s7.8.3.5
21 hours ago

https://tg88host.com/ hôm trước thấy mọi người nhắc nên mình ghé thử cho biết, kiểu vào xem giao diện thôi chứ không có ngồi mò sâu. Cảm giác đầu tiên là trang làm khá “sạch”, nhìn không bị nhồi nhét lung tung nên lướt một lát là nắm được bố cục. Mình để ý cái menu đặt ngay chỗ dễ thấy, bấm qua lại mấy mục cũng nhanh, không phải kéo lên kéo xuống tìm hoài. Mấy phần thông tin họ chia thành từng khối riêng nên mắt đỡ mệt, đọc kiểu lướt vẫn hiểu. Nói chung nhìn thân thiện, không làm người mới bị ngợp, nhất là cách họ sắp xếp các khối nội dung và menu điều hướng nổi…

Like

Tanu Sisgain
Tanu Sisgain
2 days ago

The section explaining virtual patient consultation benefits was really insightful. A reliable telemedicine app development company can help healthcare providers improve accessibility and patient care.

Like

Anosha Razzaq
Anosha Razzaq
4 days ago

the 💗meaning of this emoji can symbolize emotional softness and emotionally caring communication in online chats and social media. this emoji is commonly used when someone wants to make their reply feel emotionally gentle and emotionally welcoming. it may represent affection, emotional support, emotional appreciation, or emotional positivity depending on the context. people often use this symbol because it visually communicates feelings in a quick and emotionally expressive way. unlike plain text, emojis help messages carry emotional tone more clearly. understanding the 💗meaning of this emoji requires noticing emotional context, emotional timing, and communication patterns between the sender and receiver.

Like

hoachtungbuang.l.y.nh
7 days ago

uu88 mình ghé vào thử cho biết vì thấy nhiều người nhắc, chứ ban đầu cũng không kỳ vọng gì. Vào trang cái là thấy giao diện nhìn sạch sẽ, màu sắc dễ chịu, mấy mục chính đặt khá ngay ngắn nên không phải căng mắt tìm. Mình lướt phần giới thiệu thì thấy họ có nhắc thời gian hoạt động tầm 2016–2017, đọc cái nắm được bối cảnh luôn, đỡ phải đoán. Mình không chơi gì nhiều, chủ yếu bấm qua lại xem có rối không, mà cảm giác điều hướng khá trơn, chuyển mục không bị giật. Cái mình thích là họ chia nội dung theo từng khối rõ ràng, tiêu đề to vừa đủ nên nhìn một…

Like

©2023 by Generative Hut.

bottom of page