pakt07
Built with p5.js and SuperCollider. See /f0blog/pact-februari/
//pakt07
let n
let theta, speed, spread
const pnts = []
function setup() {
const div = select('#sketch')
const cnv = createCanvas(div.width, div.height)
cnv.parent('sketch')
frameRate(60)
n = 30
theta = 0
speed = 0.00002
spread = 1
for (let i = 0; i < n; i++) {
pnts[i] = []
pnts[i][0] = width * 0.5
pnts[i][1] = height * 0.5
}
fill(255, 0, 0)
blendMode(DIFFERENCE)
noStroke()
}
function draw() {
clear()
background(0)
for (let i = 0; i < n; i++) {
const x = (pnts[i][0] / width) * 2 - 1
const y = (pnts[i][1] / height) * 2 - 1
const vx =
((cos(theta + i * 0.001) * x - sin(theta + i * 0.001) * y) * 0.5 + 0.5) * width +
spread
const vy =
((cos(theta + i * 0.001) * y + sin(theta + i * 0.001) * x) * 0.5 + 0.5) * height +
spread
pnts[i][0] = vx
pnts[i][1] = vy
ellipse(vx, vy, 50 * 2, 50 * 2)
theta = theta + speed
}
}
Ndef(\redqueen2).play
(
Ndef(\redqueen2, {GVerb.ar(LeakDC.ar(
SinOsc.ar(
SinOsc.ar(
SinOsc.ar(
SinOsc.ar(
SinOsc.ar(
SinOsc.ar(
SinOsc.ar(
1,
0,
2,
SinOsc.ar(1/2).exprange(1, 2)
),
0,
8,
SinOsc.ar(1/4).exprange(4, 8)
),
0,
32,
SinOsc.ar(1/8).exprange(16, 32)
),
0,
128,
SinOsc.ar(1/16).exprange(64, 128)
),
0,
512,
SinOsc.ar(1/32).exprange(256, 512)
),
0,
2048,
SinOsc.ar(1/64).exprange(1024, 2048)
), 0, 0.1)
), 16, 8, 0.75, 0.5)});
)
Ndef(\redqueen2).stop