The fruits of the 'Accident Programming method'.
Interesting shapes came out by chance.
It's a creative coding artwork made with the 'Processing' programming code. It draws interesting wave shapes and animates these.
My 'Accidental Programming Method' worked!
When I was playing around Indian Ink Splashes, it created some interesting shapes like this.
It was so interesting to me! I improved it to make the shapes clearly. It will create different shapes every time.
The 'Processing' code example.
Please feel free to use this code under the terms of the GPL. To see other works based on my code is my pleasure. And my honor.
Add 20/06/10
Oh... What a shame... This code has no sense.
map(random(1.0), 0.0, 1.0, 0.00005, 0.00025);
It should be.
random(0.00005, 0.00025);
/** * Interstellar Overdrive. * Accidental Programming Method worked! * * @author @deconbatch * @version 0.2 * @license GPL Version 3 http://www.gnu.org/licenses/ * Processing 3.5.3 * 2017.12.24 ver 0.1 * 2022.05.21 ver 0.2 refactored */ float hueBase; // base hue value // noise params float npxBase; float npyBase; float npzBase; void setup() { size(720, 720); colorMode(HSB, 360, 100, 100, 100); smooth(); hueBase = random(360.0); npxBase = 0.0; npyBase = random(100.0); npzBase = random(100.0); } void draw() { int stepMax = 24000; float cycleMax = 4; float sizeBase = 2.0; float npxDiv = 0.0001; // spiral radius change float npyDiv = 0.006; // shape float npzDiv = 0.018; // dot size change npxBase += 0.005; // wave npyBase -= 0.00005; // roll npzBase += 0.0002; // blink float npx = npxBase; float npy = npyBase; float npz = npzBase; background(0, 0, 80, 100); noStroke(); translate(width * 0.5, height * 0.5); pushMatrix(); rotate(-frameCount * 0.001); for (int step = 0; step <= stepMax; step++) { float sRatio = map(step, 0, stepMax, 0.0, 1.0); float rBase = 1.0 + sRatio * width * 0.6; float theta = step * cycleMax * TWO_PI / stepMax; float eR = rBase * map(customNoise(npx) + customNoise(npy), -2.0, 2.0, 0.8, 1.25); float eX = eR * cos(theta); float eY = eR * sin(theta); float eS = sizeBase * (abs(customNoise(npz)) + sRatio * 2.0); float eHue = hueBase + map(eR, rBase * 0.8, rBase * 1.25, 0.0, 60.0) + sRatio * 90.0; float eSat = 30.0 + sRatio * 30.0; float eBri = 20.0 + sRatio * 40.0; fill(eHue % 360, eSat, eBri, 100); ellipse(eX, eY, eS, eS); npx += npxDiv; npy += npyDiv; npz += npzDiv; } popMatrix(); casing(); } /** * customNoise : returns -1.0 ... 1.0 */ float customNoise(float value) { return pow(sin(value), 3) * cos(pow(value, 2)); } /** * casing : draw fancy casing */ private void casing() { rectMode(CENTER); fill(0.0, 0.0, 0.0, 0.0); strokeWeight(54.0); stroke(0.0, 0.0, 0.0, 100.0); rect(0.0, 0.0, width, height); strokeWeight(50.0); stroke(0.0, 0.0, 100.0, 100.0); rect(0.0, 0.0, width, height); } /* Copyright (C) 2022- deconbatch This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/> */