Skip to content

Instantly share code, notes, and snippets.

@javajosh
Last active March 14, 2019 19:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save javajosh/192de4730e532697c82ccb88472fd18a to your computer and use it in GitHub Desktop.
Save javajosh/192de4730e532697c82ccb88472fd18a to your computer and use it in GitHub Desktop.
An experiment with

This is a SCRIPT-8 cassette. This is a revision. This is another revision.

// title: Swirly squares
initialState = {
totalElapsed: 0, // total time passed
rotations: [], // each rectangle's individual rotation
}
// given a number of milliseconds and square index,
// returns the square's rotation
const getRotation = (milliseconds, i) => {
return Math.sin(milliseconds / 400) * 16 * (i + 1)
}
update = (state, input, elapsed) => {
state.totalElapsed += elapsed
state.rotations = range(8).map(i => getRotation(state.totalElapsed, i))
}
draw = (state) => {
clear()
const { angle } = state
range(8).forEach(i => {
const halfSide = 8 * i / 2
const topLeft = [64 - halfSide, 64 - halfSide]
const topRight = [64 + halfSide, 64 - halfSide]
const bottomRight = [64 + halfSide, 64 + halfSide]
const bottomLeft = [64 - halfSide, 64 + halfSide]
const color = i % 7
// add 10 degrees to each successive square.
// e.g. the first square gets 0 new degrees, the second one gets 10,
// the third one gets 20, etc.
const customAngle = state.rotations[i]
polyStroke([topLeft, topRight, bottomRight, bottomLeft], customAngle, color)
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment