xxxxxxxxxx
82
/*********************************************************************
créé par le Chat de Mistral
C'est une amélioration du script https://editor.p5js.org/Anne-Laure/sketches/qyFB6VrlL
J'ai dit "Exactement ce que je voulais. comment pourrait-on améliorer ce script pour avoir un résultat plus joli (option 1) ou plus hypnotisant (option 2) ? "
L'option 1 est ici.
Mistral comprend que "joli" signifie des couleurs par exemple !
*********************************************************************/
let circles = [];
let angles = [];
let colors = [];
function setup() {
createCanvas(windowWidth, windowHeight);
colorMode(HSB, 360, 100, 100);
// Initialiser les positions des cercles et les angles de rotation
for (let i = 0; i < 6; i++) {
let angle = map(i, 0, 5, 0, TWO_PI);
let radius = min(width, height) / 3;
let x = width / 2 + radius * cos(angle);
let y = height / 2 + radius * sin(angle);
circles.push({ x, y });
angles.push(0);
colors.push(map(i, 0, 5, 0, 360));
}
}
function draw() {
background(240, 10, 90);
// Dessiner les cercles et les points tournants
let points = [];
for (let i = 0; i < circles.length; i++) {
let { x, y } = circles[i];
let angle = angles[i];
let color = colors[i];
// Calculer la position du point sur le cercle
let px = x + 50 * cos(angle);
let py = y + 50 * sin(angle);
// Dessiner le cercle avec une couleur dynamique
noFill();
stroke(color, 100, 100);
strokeWeight(2);
ellipse(x, y, 100, 100);
// Dessiner le point avec une couleur dynamique
fill(color, 100, 100);
noStroke();
ellipse(px, py, 15, 15);
// Mettre à jour l'angle pour la prochaine frame
angles[i] += 0.05;
// Stocker la position du point
points.push({ px, py });
}
// Dessiner les lignes entre les points pour former un hexagone
stroke(0, 0, 50);
strokeWeight(2);
for (let i = 0; i < points.length; i++) {
let { px: px1, py: py1 } = points[i];
let { px: px2, py: py2 } = points[(i + 1) % points.length];
line(px1, py1, px2, py2);
}
}
// Redimensionner le canevas lorsque la fenêtre est redimensionnée
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
// Réinitialiser les positions des cercles
circles = [];
for (let i = 0; i < 6; i++) {
let angle = map(i, 0, 5, 0, TWO_PI);
let radius = min(width, height) / 3;
let x = width / 2 + radius * cos(angle);
let y = height / 2 + radius * sin(angle);
circles.push({ x, y });
}
}