render.ts
import p5 from "p5"
const sketch = (p: p5) => {
let strokeColor = 254
let strokeChange = -1
const initRadius = p.min(p.windowWidth, p.windowHeight)
let radiusNoise: number
let radius: number
let angleNoise: number
let angle = -p.PI / 2
let xNoise: number
let yNoise: number
const halfWidth = p.windowWidth / 2
const halfHeight = p.windowHeight / 2
let centerX = halfWidth
let centerY = halfHeight
p.setup = () => {
p.createCanvas(p.windowWidth, p.windowHeight)
p.frameRate(30)
p.background(255)
p.smooth()
p.noFill()
radiusNoise = p.random(10)
angleNoise = p.random(10)
xNoise = p.random(10)
yNoise = p.random(10)
}
p.draw = () => {
angleNoise += 0.005
angle += p.noise(angleNoise) * 6 - 3
if (angle > 360) angle -= 360
if (angle < 0) angle += 360
radiusNoise += 0.005
radius = p.noise(radiusNoise) * initRadius + 1
xNoise += 0.01
yNoise += 0.01
centerX = halfWidth + p.noise(xNoise) * 100 - 50
centerY = halfHeight + p.noise(yNoise) * 100 - 50
const rad = p.radians(angle)
const x1 = centerX + radius * p.cos(rad)
const y1 = centerY + radius * p.sin(rad)
const opprad = rad + p.PI
const x2 = centerX + radius * p.cos(opprad)
const y2 = centerY + radius * p.sin(opprad)
strokeColor += strokeChange
if (strokeColor > 254) strokeChange = -1
if (strokeColor < 0) strokeChange = 1
p.stroke(strokeColor, 60)
p.strokeWeight(1)
p.line(x1, y1, x2, y2)
}
}
new p5(sketch)