{"url":"https://api.github.com/gists/4965670","forks_url":"https://api.github.com/gists/4965670/forks","commits_url":"https://api.github.com/gists/4965670/commits","id":"4965670","node_id":"MDQ6R2lzdDQ5NjU2NzA=","git_pull_url":"https://gist.github.com/4965670.git","git_push_url":"https://gist.github.com/4965670.git","html_url":"https://gist.github.com/mbostock/4965670","files":{".block":{"filename":".block","type":"text/plain","language":null,"raw_url":"https://gist.githubusercontent.com/mbostock/4965670/raw/703d310b399098a243a76a50bc209167e924cfd2/.block","size":17,"truncated":false,"content":"license: gpl-3.0\n","encoding":"utf-8"},"README.md":{"filename":"README.md","type":"text/markdown","language":"Markdown","raw_url":"https://gist.githubusercontent.com/mbostock/4965670/raw/82a0fbac40d5c7273c2dd1b419edd6fdd7cfd114/README.md","size":440,"truncated":false,"content":"Inspired by [Tom MacWright’s](/tmcw/4079745) previous take on one-way line markers, this example adopts a technique from my [path tween](/mbostock/3916621) example: uniform sampling via [getPointAtLength](http://www.w3.org/TR/SVG/paths.html#__svg__SVGPathElement__getPointAtLength). A rendered line is resampled such that each control point is equally spaced along the length of the line. Thus, the desired number of markers are rendered.","encoding":"utf-8"},"index.html":{"filename":"index.html","type":"text/html","language":"HTML","raw_url":"https://gist.githubusercontent.com/mbostock/4965670/raw/8a86845b8fb84fce4ba96e1edf9f000f4dfec4cd/index.html","size":1595,"truncated":false,"content":"<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<style>\n\n#base-path {\n  fill: none;\n  stroke: #000;\n  stroke-width: 1.5px;\n}\n\n#marker-path {\n  fill: none;\n  stroke: none;\n  stroke-width: 1.5px;\n  marker-mid: url(#marker);\n}\n\n</style>\n<svg width=\"960\" height=\"500\">\n  <marker id=\"marker\"\n      viewBox=\"0 0 6 6\"\n      refY=\"3\"\n      markerWidth=\"7\"\n      markerHeight=\"7\"\n      orient=\"auto\">\n    <path d=\"M0,3v-3l6,3l-6,3z\"></path>\n  </marker>\n  <path id=\"base-path\"></path>\n  <path id=\"marker-path\"></path>\n</svg>\n<script src=\"//d3js.org/d3.v3.min.js\"></script>\n<script>\n\nvar z = 0.5;\n\nvar svg = d3.select(\"svg\"),\n    width = +svg.attr(\"width\"),\n    height = +svg.attr(\"height\");\n\nvar x = d3.scale.linear()\n    .domain([-1.3, 1.3])\n    .range([0, width]);\n\nvar y = d3.scale.linear()\n    .domain([-1.3, 1.3])\n    .range([0, height]);\n\nvar line = d3.svg.line()\n    .interpolate(\"basis\");\n\nvar basePath = d3.select(\"#base-path\"),\n    markerPath = d3.select(\"#marker-path\");\n\nd3.timer(function() {\n  if ((z += 0.001) > 2) z = 0.5;\n  var path = line(d3.range(0, 12 + .1, .2).map(function(t) { return [x(Math.cos(t * z)), y(Math.sin(t))]; }));\n  basePath.attr(\"d\", path);\n  markerPath.attr(\"d\", path).attr(\"d\", resample(20));\n});\n\n// Uniform sampling based on specified pixel distance.\nfunction resample(dx) {\n  return function() {\n    var path = this,\n        l = path.getTotalLength(),\n        t = [0], i = 0, dt = dx / l;\n    while ((i += dt) < 1) t.push(i);\n    t.push(1);\n    return line(t.map(function(t) {\n      var p = path.getPointAtLength(t * l);\n      return [p.x, p.y];\n    }));\n  };\n}\n\n</script>\n","encoding":"utf-8"},"thumbnail.png":{"filename":"thumbnail.png","type":"image/png","language":null,"raw_url":"https://gist.githubusercontent.com/mbostock/4965670/raw/01c973058e831974b44c2d33750f66687731fb9b/thumbnail.png","size":9926,"truncated":false,"content":"iVBORw0KGgoAAAANSUhEUgAAAOYAAAB4CAIAAABpZBnfAAAKg2lDQ1BpY20A\nAEjHlZYHUFPpFse/e9MbLSECUkLvvYP0Grp0EJWQhBBKDIHQ7Iq4gmtBRATU\nFV2qgmsBZC2IKBYWQQXsC7KoKOtiAVRU3kUe8b15s/Nmz8yZ+5szZ/7f+cqd\n+QNALmMJhamwDABpgkxRqI87IzomloF7DCBABhRgCuRZ7AyhW0hIAPjbmBpA\nupG4YzynBf5ZyHK4GWwAoBCEEzgZ7DSETyO5gS0UZQKAskLqWtmZwjmORpgm\nQgZEeG4dGm+eN8xxwjyXfOsJD/VAuBYAPJnFEvEAICGagJHF5iE6pLsImwk4\nfAEAZDTCzuwkFgdhT4SN0tJWzbEQYb2E/9Dh/ZdmgkSTxeJJeH4v3wLvyc8Q\nprJy/+Fx/P9ISxUvrKGKJDkjJcx/bj3kzHLYLK+wBU7iMgMWWJjpHrrA/Exm\nuKRH7BuxwOKUCLcFTlnlL+kXJAQFS/QzPGIXOC8pPGqBOVxPrwUWrQqV9Gdk\nhXl97/cIWuBkll/IArNE8+c1x9xUn9DvM4dI5hSkBkn2kijylvRwM77vNzMp\n3FfCyAOQ9PO9mZL9iny/66eGSDRF4lDJOXAFERJNDstTcraADwIBC7AzuTmZ\ncwN7rBLmivi8pEyGG/LquUYMpoBtYsSwMDO3BHP/0PwVvaN/+zcg+o3vtfR2\nAOwLkSLve42lCcDZZwBQp77XNN8i17sLgPO9bLEoa74291wBBhCBNKABReQF\naAI9YAwsgA1wBK7AC/iBYBAOYsAKwAZJIA2IQDZYAzaCAlAEdoG9oBwcAkdA\nLTgOToIWcA5cAlfBTdAL+sFDMARGwSswAabADARBOIgCUSFFSA3ShgwhC8gO\ncoa8oAAoFIqB4iEeJIDE0BpoM1QEFUPl0GGoDvoFOgtdgq5DfdB9aBgag95C\nn2AUTIZpsAqsA5vCdrAb7A+Hw8thHpwO58H58A64DK6Cj8HN8CX4JtwPD8Gv\n4EkUQJFQdJQ6yhhlh/JABaNiUYkoEWodqhBViqpCNaLaUF2oO6gh1DjqIxqL\npqIZaGO0I9oXHYFmo9PR69Db0eXoWnQzuhN9Bz2MnkB/xVAwyhhDjAOGiYnG\n8DDZmAJMKaYacwZzBdOPGcVMYbFYOlYXa4v1xcZgk7GrsduxB7BN2HZsH3YE\nO4nD4RRxhjgnXDCOhcvEFeD2447hLuJu40ZxH/AkvBreAu+Nj8UL8Jvwpfh6\n/AX8bfxz/AxBhqBNcCAEEziEXMJOwlFCG+EWYZQwQ5Ql6hKdiOHEZOJGYhmx\nkXiF+Ij4jkQiaZDsSUtJfNIGUhnpBOkaaZj0kSxHNiB7kOPIYvIOcg25nXyf\n/I5CoehQXCmxlEzKDkod5TLlCeWDFFXKRIopxZFaL1Uh1Sx1W+q1NEFaW9pN\neoV0nnSp9CnpW9LjMgQZHRkPGZbMOpkKmbMygzKTslRZc9lg2TTZ7bL1stdl\nX8jh5HTkvOQ4cvlyR+Quy41QUVRNqgeVTd1MPUq9Qh2lYWm6NCYtmVZEO07r\noU3Iy8lbyUfK58hXyJ+XH6Kj6Dp0Jj2VvpN+kj5A/7RIZZHbIu6ibYsaF91e\nNK2wWMFVgatQqNCk0K/wSZGh6KWYorhbsUXxsRJayUBpqVK20kGlK0rji2mL\nHRezFxcuPrn4gTKsbKAcqrxa+Yhyt/KkiqqKj4pQZb/KZZVxVbqqq2qyaonq\nBdUxNaqasxpfrUTtotpLhjzDjZHKKGN0MibUldV91cXqh9V71Gc0dDUiNDZp\nNGk81iRq2mkmapZodmhOaKlpBWqt0WrQeqBN0LbTTtLep92lPa2jqxOls1Wn\nReeFroIuUzdPt0H3kR5Fz0UvXa9K764+Vt9OP0X/gH6vAWxgbZBkUGFwyxA2\ntDHkGx4w7DPCGNkbCYyqjAaNycZuxlnGDcbDJnSTAJNNJi0mr021TGNNd5t2\nmX41szZLNTtq9tBcztzPfJN5m/lbCwMLtkWFxV1LiqW35XrLVss3VoZWXKuD\nVvesqdaB1lutO6y/2NjaiGwabcZstWzjbSttB+1odiF22+2u2WPs3e3X25+z\n/+hg45DpcNLhL0djxxTHescXS3SXcJccXTLipOHEcjrsNOTMcI53/sl5yEXd\nheVS5fLUVdOV41rt+txN3y3Z7Zjba3czd5H7GfdpDwePtR7tnihPH89Czx4v\nOa8Ir3KvJ94a3jzvBu8JH2uf1T7tvhhff9/dvoNMFSabWcec8LP1W+vX6U/2\nD/Mv938aYBAgCmgLhAP9AvcEPgrSDhIEtQSDYGbwnuDHIboh6SG/LsUuDVla\nsfRZqHnomtCuMGrYyrD6sKlw9/Cd4Q8j9CLEER2R0pFxkXWR01GeUcVRQ9Gm\n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\nmJ6e3tXVJZPJbGxsLC0tAwMDQ0NDEUICgeBvf/vbggULhg0bxuFw4uPjhUJh\nRkaGmZmZhYVFbW1tW1vb3r17VSoVQ4Ouq/bloCX7m0APBppUysVUqVQsFis7\nOzsyMnL+/Pk2NjYqlaquri4mJobL5a5evdrd3d3f33/evHmbN2+GiyQmJo4d\nO5bNZiOEnJycEhMT2Ww2XCcvL6+kpKSlpWXgwIEsFsvQ0LCwsLC9vd3b29vD\nw2PFihXr1q1zc3NDCDk4OEyZMsXOzg5O5PP59vb2n3zyiVwuFwgET548ycvL\nCwsL++ijj5ydnQcNGmRkZMThcBBCEyZMqKqqcnV1RQgJBIKtW7eWl5fb2tp+\n9tlnXC6XxNgCg8RC/wmA10h9EAgEmzZtGjt2rJOTk0gk4vF4X3zxxaRJkw4f\nPuzk5FRSUlJYWBgaGgrGUiwW6+vrg76h20RpPScnZ9u2bbNmzXJycoKv//nP\nf/bt27dixQozM7PExMShQ4eOGzcOrkP1nChbCEYdHhm4y0B0dLSLi4u7uzuf\nzy8rK1u2bJmnp2dycrKdnR0VRmCz2SKR6NixY1ZWVhYWFo8fP/b29jYyMho8\neLCuK/vloCX7C6BLDr3v7OxsY2NjFxeXxsbGlpaWdevWPXz48OTJk1OmTOFw\nON9///369euNjY0pcUO3hpIX/C4Wi8PDw0eNGuXi4iKTyaqqqlasWPH+++/H\nxcUNHTq0qqrqwYMHlGOANH18sOhwQep3pOV9QjmpsAD8UzixoKBg165dPj4+\n9vb2RkZGAoGguLj44MGD4AmA4qFgPj4+gwcPvnDhAnUpMsBvN1Q3X61WS6VS\nsIsqlUosFi9duhQhFBQUdO3atfb29r179547d446BT5QwSy5XC6XyyF0Wl5e\nzuPxMMYNDQ3Xr1+HRjk6OrqtrU0kEn377bddXV0YYyoiq1Qqe1/wpVAqlXAR\nlUoll8upK3d3d48bNw4hdOzYMeo/SqVSjPGlS5eMjIzMzMyam5uxJnZGBLSV\nRQghsE9lZWVr1qwZPXr0uHHjBg4c2N7evm/fvszMzIEDB2JNgBNp7KhSqQRj\nDIqB1h+us379+v3798+cOXPVqlWenp4JCQn6+vrr1q2jTCllPuGyr9zCwUvF\n4XAkEklsbKyhoaGRkRGY1aqqKn9/fyitWCxOS0vj8/lr167Fmrai7/PWSVZb\n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\nkqUhjP8DNPK06Y5sPnQAAAAASUVORK5CYII=\n","encoding":"base64"}},"public":true,"created_at":"2013-02-16T05:28:50Z","updated_at":"2016-02-09T02:08:12Z","description":"One-Way Markers","comments":0,"user":null,"comments_enabled":true,"comments_url":"https://api.github.com/gists/4965670/comments","owner":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"forks":[{"url":"https://api.github.com/gists/6400524576f286e2740b","user":{"login":"hlucasfranca","id":11790275,"node_id":"MDQ6VXNlcjExNzkwMjc1","avatar_url":"https://avatars.githubusercontent.com/u/11790275?v=4","gravatar_id":"","url":"https://api.github.com/users/hlucasfranca","html_url":"https://github.com/hlucasfranca","followers_url":"https://api.github.com/users/hlucasfranca/followers","following_url":"https://api.github.com/users/hlucasfranca/following{/other_user}","gists_url":"https://api.github.com/users/hlucasfranca/gists{/gist_id}","starred_url":"https://api.github.com/users/hlucasfranca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hlucasfranca/subscriptions","organizations_url":"https://api.github.com/users/hlucasfranca/orgs","repos_url":"https://api.github.com/users/hlucasfranca/repos","events_url":"https://api.github.com/users/hlucasfranca/events{/privacy}","received_events_url":"https://api.github.com/users/hlucasfranca/received_events","type":"User","user_view_type":"public","site_admin":false,"name":"Henrique Lucas França","company":null,"blog":"https://www.linkedin.com/in/hlucasfranca/","location":"São Paulo - Brazil","email":null,"hireable":null,"bio":null,"twitter_username":null,"public_repos":43,"public_gists":52,"followers":58,"following":59,"created_at":"2015-04-03T20:30:38Z","updated_at":"2026-03-04T10:55:41Z"},"id":"6400524576f286e2740b","created_at":"2015-09-14T12:28:23Z","updated_at":"2015-09-14T12:28:23Z"}],"history":[{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"00d365b5f4eb2c3caec0717cb1bb9c18bfd39662","committed_at":"2016-02-09T02:08:10Z","change_status":{"total":1,"additions":1,"deletions":0},"url":"https://api.github.com/gists/4965670/00d365b5f4eb2c3caec0717cb1bb9c18bfd39662"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"b1cf4c30a887b4b21cfca866399715be1fa1f791","committed_at":"2015-10-31T01:35:23Z","change_status":{"total":2,"additions":1,"deletions":1},"url":"https://api.github.com/gists/4965670/b1cf4c30a887b4b21cfca866399715be1fa1f791"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"a3daead6e3bb1d64039729340cf665c50b7d4f7c","committed_at":"2015-06-11T19:25:50Z","change_status":{"total":2,"additions":1,"deletions":1},"url":"https://api.github.com/gists/4965670/a3daead6e3bb1d64039729340cf665c50b7d4f7c"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"2a17bd73da23ebed0c35d62d423d96e1065b3cfc","committed_at":"2013-02-16T05:47:57Z","change_status":{"total":16,"additions":7,"deletions":9},"url":"https://api.github.com/gists/4965670/2a17bd73da23ebed0c35d62d423d96e1065b3cfc"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"f2aa852efb52f8d0e1a08e41c06e3d16c19ce0d9","committed_at":"2013-02-16T05:29:50Z","change_status":{"total":0,"additions":0,"deletions":0},"url":"https://api.github.com/gists/4965670/f2aa852efb52f8d0e1a08e41c06e3d16c19ce0d9"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"b2675e44868b5ea56001165e6742d87b07738da9","committed_at":"2013-02-16T05:28:51Z","change_status":{"total":79,"additions":79,"deletions":0},"url":"https://api.github.com/gists/4965670/b2675e44868b5ea56001165e6742d87b07738da9"}],"truncated":false}