birds
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> | |
.bird { | |
stroke: grey; | |
stroke-width: 2; | |
fill: none; | |
} | |
</style> | |
<body> | |
<svg id='main' width=960 height=500></svg> | |
</body> | |
<script src="//d3js.org/d3.v3.min.js"></script> | |
<script> | |
/* | |
Playing with d3 paths to make a scene of birds, | |
the kind I used to draw in preschool | |
/``\_/``\ | |
*/ | |
// generate birds | |
var birds = []; | |
for(var i = 0; i < 50; i++) { | |
var b = { x: Math.random() * 900, y: Math.random() * 500, size: Math.random() * 20 + 10 }; | |
b.points = [ | |
{ x: b.x - b.size, y: b.y + (b.size * 0.05) }, // left wing tip | |
{ x: b.x - (b.size * 0.2), y: b.y - (b.size * 0.3) }, | |
{ x: b.x, y: b.y }, // center | |
{ x: b.x, y: b.y }, // duplicate center so point is sharp rather than round | |
{ x: b.x + (b.size * 0.2), y: b.y - (b.size * 0.3) }, | |
{ x: b.x + b.size, y: b.y + (b.size * 0.05) } // right wing tip | |
]; | |
birds.push(b); | |
} | |
var lineFunction = d3.svg.line() | |
.x(function(d) { return d.x }) | |
.y(function(d) { return d.y }) | |
.interpolate("basis"); // "curve" the wings | |
var bird = d3.select("#main") | |
.selectAll(".bird") | |
.data(birds) | |
.enter().append("path") | |
.attr("class", "bird") | |
.attr("d", function(d) { return lineFunction(d.points) }); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment