Lissajous

Lissajous curve


const scale = 110.0
var freqA = 0.0
var freqB = 0.0
var prevX = -1.0
var prevY = -1.0
var x = 0.0
var y = 0.0
var angle = 0.0

function initialise() {
	clear()
	
	frame = 0
	
	translate(width/2, height/2)
	freqA = randomFloat(25.0, 150.0)
	freqB = randomFloat(25.0, 150.0)
	
	angle = (frame / freqB * TWO_PI)
	prevX = cos(angle) * scale
	
	angle = (frame / freqA * TWO_PI)
	prevY = sin(angle) * scale
	
	frame++
	
	stroke("#000000")
	fill("#ffffff01")
}

function loop() {
	if(frame > 1000) initialise()
	
	angle = (frame / freqB * TWO_PI)
	x = cos(angle) * scale
	
	angle = (frame / freqA * TWO_PI)
	y = sin(angle) * scale
	
	line(prevX, prevY, x, y)
	
	prevX = x
	prevY = y
	
	//overdraw
	rect(0, 0, width, height)
	
	redraw()
}

Made with Coracle