[ Launch: seinfeld ] 6799084 by ptvans
[ Launch: sin waves ] 6789968 by ptvans
See Previous Inlet [ Gist ]
-
-
Save ptvans/6799084 to your computer and use it in GitHub Desktop.
seinfeld
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
{"editor_editor":{"coffee":false,"vim":false,"emacs":false,"width":600,"height":300,"hide":false},"description":"seinfeld","endpoint":"","display":"svg","public":true,"require":[],"fileconfigs":{"_.md":{"default":true,"vim":false,"emacs":false,"fontSize":12},"config.json":{"default":true,"vim":false,"emacs":false,"fontSize":12},"inlet.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"inlet.svg":{"default":true,"vim":false,"emacs":false,"fontSize":12}},"fullscreen":true,"play":true,"loop":true,"restart":false,"autoinit":true,"pause":true,"loop_type":"period","bv":false,"nclones":15,"clone_opacity":0.4,"duration":3000,"ease":"linear","dt":0.01,"thumbnail":"http://i.imgur.com/5yUdzBm.png"} |
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
tributary.duration = 50000; | |
//Layout properties | |
var n = 24; | |
var m = 48; | |
trib.spacing = 24; | |
trib.opacity = 0.8; trib_options.opacity = {"min":0, "max":1}; | |
trib.stroke_width = 1; | |
//Sin wave function | |
//y = amplitude * sin( omega * theta + phase) | |
trib.amplitude = 70; | |
trib.theta = -7; | |
trib.omega = 1.57696; | |
trib.phase = tributary.anim(1,7.25); | |
var colors = [ | |
'#51B6AA' | |
, '#6ECEB3' | |
, '#8C6EC0' | |
, '#BC89C0' | |
] | |
//interpolate over multiple colors | |
var color_scale = function(i) { | |
var num_interps = colors.length -1 | |
var ord = d3.scale.linear() | |
.domain([0, n]) | |
.range([0, num_interps]) | |
var section = parseInt(ord(i)) | |
var section_size = n / num_interps | |
//get the two colors we want to interpolate between | |
var col_range = [colors[section], colors[section+1]] | |
var col_scale = d3.scale.linear() | |
.domain([section * section_size, (section+1) * section_size]) | |
//.interpolate(d3.interpolateRgb) | |
.interpolate(d3.interpolateHsl) | |
.range(col_range) | |
return col_scale(i) | |
} | |
var color = color_scale | |
var sw = tributary.sw * 1.1; | |
//make the sin waves extend past the width a little | |
//sw += .1 * sw | |
var sh = tributary.sh; | |
var lines = [ ]; | |
for (i in d3.range(n)) { | |
var data = d3.range(m) | |
lines.push({ | |
index: i, | |
data: data | |
}) | |
} | |
var xscale = d3.scale.linear() | |
.domain([0, m]) | |
.range([-.1*sw, sw]) | |
function line_maker( data ) { | |
var freq = trib.omega * data.index | |
var svgline = d3.svg.line() | |
.x(function(d,i) { | |
return xscale(d); | |
}) | |
.y(function(d,i) { | |
var th = d/m * trib.theta | |
var ph = (n-data.index) * trib.phase | |
var y = trib.amplitude * Math.sin(freq * th + ph ); | |
return y | |
}) | |
.interpolate("basis") | |
//.interpolate("linear") | |
return svgline(data.data); | |
} | |
function lineenter(d, i) { | |
d3.select(this).selectAll("path.path") | |
.data([d]) | |
.enter() | |
.append("svg:path") | |
.attr("class", "path") | |
.attr("stroke-width", trib.stroke_width) | |
.attr("stroke", "#fff") | |
.attr("fill", "none") | |
update_spacing() | |
} | |
function update_spacing() | |
{ | |
var th = trib.spacing * n; | |
var hscale = d3.scale.linear() | |
.domain([0, n]) | |
.range([0, sh]) | |
d3.selectAll("g.line path") | |
.attr("transform", function(d, i) { | |
//return "translate(" + [0, th - spacing * d.index] + ")"; | |
return "translate(" + [0, 10+sh/2 + th / 2 - trib.spacing * d.index] + ")"; | |
}) | |
} | |
var svg = d3.select("svg") | |
.append("svg:g") | |
var line = svg.selectAll("g.line") | |
.data(lines) | |
.enter().append("svg:g") | |
.attr("class", "line") | |
.each(lineenter); | |
d3.selectAll("g.line path") | |
.attr("d", function(d,i) { | |
return line_maker(d) | |
}) | |
.attr("stroke", function(d,i) { return color(d.index);}) | |
.attr("opacity", trib.opacity); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment