javascriptDemo / stim2.js
Francis89074's picture
Create stim2.js
c67b039 verified
let flickerRate = 40; // 40 Hz flicker rate
let angle = 0; // For rotation
let isBright = true; // Toggle between bright and dark states
function setup() {
createCanvas(windowWidth, windowHeight);
frameRate(flickerRate); // Set to 40 Hz
rectMode(CENTER); // Center shapes for rotation
background(0);
}
function draw() {
// Flicker between two states
if (isBright) {
background(255); // Bright background
} else {
background(0); // Dark background
}
isBright = !isBright; // Toggle
// Add rotating grid of shapes
let gridSize = 80; // Size of grid cells
translate(width / 2, height / 2); // Move to center
rotate(angle); // Apply rotation
angle += 0.02; // Slow rotation speed
for (let x = -width; x < width; x += gridSize) {
for (let y = -height; y < height; y += gridSize) {
// Alternate colors based on flicker state and position
if ((floor(x / gridSize) + floor(y / gridSize)) % 2 === 0) {
fill(isBright ? 0 : 255); // Inverse of background
} else {
fill(isBright ? 255 : 0);
}
noStroke();
// Draw rotating rectangles and circles
push();
translate(x, y);
rotate(angle * 0.5); // Additional rotation for each shape
rect(0, 0, gridSize * 0.6, gridSize * 0.6); // Square
pop();
// Overlay smaller flickering circles
fill(isBright ? 255 : 0); // Opposite color for contrast
ellipse(x, y, gridSize * 0.3); // Circle
}
}
}
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
}