Last active
September 30, 2017 16:55
-
-
Save 1wheel/de3824e045523ac67a56 to your computer and use it in GitHub Desktop.
glowstick
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style> | |
svg{ | |
display: block; | |
margin: 5px auto; | |
overflow: visible; | |
} | |
</style> | |
<body></body> | |
<script src="/1wheel/raw/67b47524ed8ed829d021/d3-3.5.5.js"></script> | |
<script src="/1wheel/raw/67b47524ed8ed829d021/lodash-3.8.0.js"></script> | |
<script src='/1wheel/raw/1b6758978dc2d52d3a37/d3-jetpack.js'></script> | |
<script src='/1wheel/raw/1b6758978dc2d52d3a37/d3-starterkit.js'></script> | |
<script> | |
var s = 490 | |
var svg = d3.select('body').append('svg') | |
.attr({width: s, height: s}) | |
.append('g') | |
.translate([s/2, s/2]) | |
var defs = svg.append('defs') | |
var filter = defs.append('filter') | |
.attr({id: 'glow'}) | |
filter.append("feGaussianBlur") | |
.attr({stdDeviation: 3, result: 'coloredBlur'}) | |
var merge = filter.append('feMerge') | |
merge.append('feMergeNode') | |
.attr({in: 'coloredBlur'}) | |
merge.append('feMergeNode') | |
.attr({in: 'sourceGraphic'}) | |
var arc = d3.svg.arc() | |
.innerRadius(s/2 - 20) | |
.outerRadius(s/2) | |
.startAngle(Math.PI) | |
.endAngle(function(d){ return Math.PI + Math.PI*2*d }) | |
.cornerRadius(100) | |
var curRadius = Math.random() | |
var pathBG = svg.append('path').attr('d', arc(curRadius)) | |
.attr({fill: '#f0f'}) | |
.style('filter', 'url(#glow)') | |
var pathFG = svg.append('path').attr('d', arc(curRadius)) | |
.attr({fill: '#fcf'}) | |
setInterval(function(){ | |
var newRadius = Math.random() | |
d3.selectAll('path').transition().duration(750) | |
.attrTween('d', function(d){ | |
var i = d3.interpolate(curRadius, newRadius) | |
return function(t){ return arc(i(t)) } | |
}) | |
.each('end', function(){ curRadius = newRadius }) | |
}, 1000) | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment