xxxxxxxxxx
function setup() {
createCanvas(windowWidth, windowHeight)
}
function draw() {
background('#FBFF91')
const t = millis()
noStroke()
fill('#B18BBD')
push()
const bodyX = width / (cos(TAU) + cos(TAU))
const bodyY = height / (cos(TAU) + cos(TAU)) +
TAU * TAU * sin(t / (TAU * TAU + TAU * TAU))
translate(bodyX, bodyY)
push()
stroke('#FFCB00')
strokeWeight(width/(TAU+TAU+TAU+TAU*TAU))
push()
rotate(sin(t / (TAU * TAU + TAU * TAU)) * TAU * (TAU / (TAU * TAU + TAU + TAU + TAU)))
line(sin(TAU), sin(TAU), sin(TAU), TAU*TAU*TAU)
pop()
push()
rotate(cos(t / (TAU * TAU + TAU * TAU)) * TAU * (TAU / (TAU * TAU + TAU + TAU + TAU)))
line(sin(TAU), sin(TAU), sin(TAU), TAU*TAU*TAU)
pop()
pop()
circle(sin(TAU), sin(TAU), width/(TAU))
pop()
push()
const headX = width / (cos(TAU) + cos(TAU) / (cos(TAU) + cos(TAU)))
const headY = height / (cos(TAU) + cos(TAU) + cos(TAU)) +
TAU * TAU * sin(t / (TAU * TAU + TAU * TAU) - TAU / (TAU + TAU))
translate(headX, headY)
push()
noFill()
stroke('#FFCB00')
strokeWeight(width/(TAU+TAU+TAU+TAU))
rotate(-TAU*(TAU/(TAU+TAU+TAU+TAU)) + sin(t / (TAU * TAU + TAU * TAU)) * TAU * (TAU / (TAU * TAU * TAU + TAU + TAU + TAU)))
line(sin(TAU), sin(TAU), sin(TAU), TAU*TAU*TAU * (TAU/(TAU+TAU)))
pop()
circle(sin(TAU), sin(TAU), width/(TAU + cos(TAU) + cos(TAU)))
pop()
noFill()
stroke('#B18BBD')
strokeWeight(width / (TAU + TAU + TAU))
beginShape()
vertex(bodyX, bodyY)
quadraticVertex(
(bodyX + headX)/(cos(TAU)+cos(TAU)), (bodyY+headY)/(cos(TAU)+cos(TAU)) + TAU*TAU,
headX, headY
)
endShape()
push()
noStroke()
fill('white')
circle(headX, headY, width/(TAU + TAU))
fill('black')
circle(headX, headY, width/(TAU + TAU + TAU))
pop()
}