{
const context = canvas.getContext('2d')
context.imageSmoothingEnabled = true;
const s = new SimplexNoise(myseed.value)
var w = context.canvas.width,
h = context.canvas.height,
w2 = w / 2,
h2 = h / 2
var x = w >> 1, y = h >> 1
var newx = x, newy = y
var overx = 0, overy = 0
const theta = 0.5
var wsin = 0
var frames = 0
var beta = 800
function step() {
if (++frames % 15 == 100) {
frames = 0
}
if (++beta == 100) {
beta = 0
}
let this_speed = (101 - speed.value)
let points = scribble(
frames / this_speed,
beta / 400 + Math.sin(2 * 3.141592 * (beta / 800)),
beta / 2000
)
context.fillRect(0, 0, w, h)
for (var i = 0; i < points.length; i++) {
newx = w2 + w2 * points[i][0]
newy = h2 + h2 * points[i][1]
context.beginPath()
context.moveTo(x, y)
overx = newx - x
overy = newy - y
if (i > 0) {
context.lineTo(newx + 0.3 * overx, newy + 0.3 * overy)
context.moveTo(newx, newy)
}
context.lineWidth = 1 + Math.abs(18 * s.noise3D(points[i][0], points[i][1], -1))
context.strokeStyle = "#FFFFFF"
context.stroke()
x = newx
y = newy
}
window.requestAnimationFrame(step)
}
window.requestAnimationFrame(step)
}