Skip to content

Instantly share code, notes, and snippets.

@tmcw
Last active August 27, 2017 22:57
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 tmcw/d5a6f3a18a09ef2910c5842719df8596 to your computer and use it in GitHub Desktop.
Save tmcw/d5a6f3a18a09ef2910c5842719df8596 to your computer and use it in GitHub Desktop.
Badge
var c = document.body.appendChild(document.createElement('canvas'));
var w = 1050, h = 1500;
c.width = w;
c.height = h;
var ctx = c.getContext('2d');
ctx.fillStyle = '#000';
function wave(t, n, f) {
var val = 0;
for (var k = 1; k < n; k ++) {
val += Math.sin(Math.PI * 4 * ((2 * k) - 1) * f * t) / ((2 * k) - 1);
}
return (4 / Math.PI) * val;
}
function draw(n, f, a) {
ctx.clearRect(0,0,w,h);
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(0, h/2);
for (var t = 0; t < 1.05; t += 0.002) {
var y = wave(t * Math.PI, n, f)
ctx.lineTo(t * w * 1.26, (h/2) + (y * h/4));
}
ctx.lineTo(w, 0);
ctx.fill();
}
function drawAt(n) {
draw(n, 0.2);
}
drawAt(0.5);
var i = 0;
var iter = 2;
setInterval(() => {
if (i < 100) {
drawAt(0.5 * i);
}
i += iter;
iter *= 2;
}, 500);
<body>
<script src='badge.js'></script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment