Skip to content

Instantly share code, notes, and snippets.

@gabrielflorit
Last active June 6, 2018 05:55
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 gabrielflorit/c88dc42cef715a2f6e7237f056193b4c to your computer and use it in GitHub Desktop.
Save gabrielflorit/c88dc42cef715a2f6e7237f056193b4c to your computer and use it in GitHub Desktop.
SCRIPT-8
// title: Trigo-2
/* eslint-disable no-global-assign */
initialState = {
x: 0
}
update = state => {
state.x += 0.01 * Math.PI
if (state.x > Math.PI) {
state.x = -Math.PI
}
}
draw = state => {
clear()
// origin
const o = { x: 64, y: 64 }
// axes
line(o.x, 0, o.x, 128, 6)
line(0, o.y, 128, o.y, 6)
const r = 20
// draw sine
range(-0.5, 0.5, 0.01).forEach(i => {
const angle = i * 2 * Math.PI
const x = angle
const y = Math.sin(angle)
rectFill(o.x + r * x, o.y + r * y, 1, 1, 0)
})
// draw axes markers
circFill(o.x + r * state.x, o.y, 2, 0)
circFill(o.x, o.y + r * Math.sin(state.x), 2, 0)
// draw marker
circFill(o.x + r * state.x, o.y + r * Math.sin(state.x), 3, 7)
circStroke(o.x + r * state.x, o.y + r * Math.sin(state.x), 4, 0)
print(0, 0, 'sine', 0)
// // draw a circle
// const points = 90
// const angle = 360 / points
// const radius = 62
// range(points).forEach(i => {
// const a = i * -angle * Math.PI / 180
// const x = 64 + radius * Math.cos(a)
// const y = 64 + radius * Math.sin(a)
// circFill(x, y, 2, 0)
// })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment