xxxxxxxxxx
//Ring for Ascendance
let sketch = function(p) {
let rings = 20;
let dim_init = 50;
let dim_delta = 100;
let chaos_init = 0.9;
let chaos_delta = 0.50;
let chaos_mag = 500;
let ox = p.random(10000);
let oy = p.random(10000);
let oz = p.random(10000);
let hu = p.random(200);
let arr = [];
let spacing = 10;
let magnitude = p.random(20, 50);
let noise_delta = 15;
let noise_radius = p.random(0.3);
p.setup = function() {
p.createCanvas(1112, 834);
p.strokeWeight(3);
p.stroke(hu, 0, 200);
p.scale(.5);
p.smooth();
p.noLoop();
for (let i = 0; i < 360; i++) {
arr.push(dim_init);
}
};
p.draw = function() {
p.push();
p.translate(p.randomGaussian(p.width/2), p.randomGaussian(p.height/2));
display();
p.pop();
};
function display() {
for (let i = 0; i < rings; i++) {
if (i % 6 == 0) p.strokeWeight(10);
else p.strokeWeight(5);
var new_arr = [];
p.beginShape();
for (const ang in arr) {
let rad = p.radians(ang);
let new_radius = spacing + arr[ang] + getNoise(rad, i * noise_delta) * magnitude;
p.vertex(new_radius * p.cos(rad), new_radius * p.sin(rad));
new_arr[ang] = new_radius;
}
p.beginContour();
for (const ang in arr) {
let rad = p.radians(359 - ang);
p.vertex(arr[359 - ang] * p.cos(rad), arr[359 - ang] * p.sin(rad));
}
p.endContour();
p.endShape(p.CLOSE);
arr = new_arr;
}
}
function getNoise(radian, dim) {
let r = radian % p.TAU;
if (r < 0.0) {
r += p.TAU;
}
return p.noise(ox + p.cos(r) * (noise_radius + dim / 200), oy + p.sin(r) * (noise_radius + dim / 200), dim);
}
function getNoiseWithTime(radian, dim, time) {
let r = radian % p.TWO_PI;
if (r < 0.0) {
r += p.TWO_PI;
}
return p.noise(ox + p.cos(r) * dim, oy + p.sin(r) * dim, oz + time);
}
p.keyTyped = function() {
if (p.key === 'r') {
p.redraw();
}
if (p.key === 's') {
p.saveCanvas("topo" + ".jpg");
}
}
};
new p5(sketch);