commit c31ef427b0ec1ed95df28c1b050cebd8124db2c4 Author: Stedd Date: Sat Dec 24 01:47:30 2022 +0100 First commit diff --git a/SpeedOfLight.pde b/SpeedOfLight.pde new file mode 100644 index 0000000..43fb776 --- /dev/null +++ b/SpeedOfLight.pde @@ -0,0 +1,49 @@ +//Config +int initialRadius = 5; +int radiusIncrease = 2; +int delay = 10; // Declare and initialize delay in frames +int bufferSize = 50; // Declare and initialize ring buffer size + +int sourceX = mouseX; // Declare and initialize source point x coordinate to current mouse x coordinate +int sourceY = mouseY; // Declare and initialize source point y coordinate to current mouse y coordinate +int[] buffer = new int[bufferSize]; // Declare and initialize radius buffer +int[] sourceXBuffer = new int[bufferSize]; // Declare and initialize source point x coordinate buffer +int[] sourceYBuffer = new int[bufferSize]; // Declare and initialize source point y coordinate buffer +int[] colors = new int[bufferSize]; // Declare and initialize color buffer +int bufferIndex = 0; // Declare and initialize buffer index +int frameCount = 0; // Declare and initialize frame counter + + +void setup() { + size(800, 800); // Set canvas size + colorMode(HSB, 360, 100, 100); // Set color mode to HSB +} + +void draw() { + background(255); // Clear canvas + + for (int i = 0; i < bufferSize; i++) { // Iterate over ring buffer + int r = buffer[i]; // Get radius value from buffer + int x = sourceXBuffer[i]; // Get source point x coordinate from buffer + int y = sourceYBuffer[i]; // Get source point y coordinate from buffer + stroke(colors[i]); // Set stroke color from color buffer + noFill(); // Remove fill + ellipse(x, y, r, r); // Draw circle with radius and source point coordinates from buffers + + buffer[i]+=radiusIncrease; + } + + if (frameCount % delay == 0) { // Check if delay has passed + buffer[bufferIndex] = initialRadius; // Add current radius to buffer + sourceXBuffer[bufferIndex] = sourceX; // Add current source point x coordinate to buffer + sourceYBuffer[bufferIndex] = sourceY; // Add current source point y coordinate to buffer + colors[bufferIndex] = color(0); // Add random color to color buffer + bufferIndex = (bufferIndex + 1) % bufferSize; // Increment buffer index and wrap around if necessary + //radius = 5; // Reset radius to small value + } + +sourceX = mouseX; +sourceY = mouseY; + //radius += 2; // Increment radius + frameCount++; // Increment frame counter +}